authorgravatar for git@paperclover.netclover caruso <git@paperclover.net> 2026-09-27 04:23:40-07:00
committergravatar for git@paperclover.netclover caruso <git@paperclover.net> 2026-09-27 11:01:00-07:00
log16f919e13a25e8ef16fcd7e7acc311210c81688b
treecce19f27fca96beb0c4f6d28e1c28ff29be3cfd0
parent20f70854dfb31efe4ad51f2844399553822889c1
signature Signed by SSH key SHA256:52mNGHRsVFBDED9IAX5pe+LRWUefqTbxEReunq21QvU

feat(data): page series like OneNote, page colours, and notebook management ops

Moved pages get a new page series as OneNote's drag gives them, and merges read remote moves from series changes (page order only for older files); empty series are never written. Page and section reorders, OneNote's recycle bin, new notebooks and sections, title date/time fields and PageOp::Color follow native captures. New rows: notebook-management, conflict-page series cases, page-lifecycle *-series regenerations. Assisted-by: claude-opus-5.5 Assisted-by: claude-opus-5

757 files changed, 12491 insertions(+), 137 deletions(-)

corpus/conflict-page/README.md+5
......@@ -58,6 +58,11 @@ holding A's edit, in a new series where A had it; B's version stays in the recyc
5858- `native-restore`: from One, Two, Target, Three, Four, A moved Four before One
5959 (re-seriesing One, Two, Target, Three) and B deleted Target: Four, One, Two, Target, Three.
6060
61`series-move` is `a_move_after_a_native_merge_drops_its_empty_series`
62(`crates/onestore/tests/page_movement.rs`, `ONESTORE_EMPTY_SERIES_EXPORT`): Rust moves a
63page of `native-pages/merged`, giving it a series of its own and dropping the empty
64series; OneNote's cold read (`cold`) keeps every byte after the header.
65
6166`page_moves_and_a_removed_page_merge_as_onenote_merges_them` in
6267`crates/notebook/tests/sync_pages.rs` replays both with Snowbound's queue, A's moves as
6368moves of the pages A re-seriesed, and reaches OneNote's order.
corpus/conflict-page/series-move/candidate/synthetic.one created
Binary files /dev/null and b/corpus/conflict-page/series-move/candidate/synthetic.one differ
corpus/conflict-page/series-move/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-BAB2A5E1 -ExpectedPages 6", "exit": 0, "stdout": "Read 1 sections and 6 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/conflict-page/series-move/cold/machine.json created+1
......@@ -0,0 +1 @@
1{"name": "m6-bab2a5e1", "hostname": "ONE-M6-BAB2A5E1"}
corpus/conflict-page/series-move/cold/notebook/Open Notebook.onetoc2 created
Binary files /dev/null and b/corpus/conflict-page/series-move/cold/notebook/Open Notebook.onetoc2 differ
corpus/conflict-page/series-move/cold/notebook/synthetic.one created
Binary files /dev/null and b/corpus/conflict-page/series-move/cold/notebook/synthetic.one differ
corpus/conflict-page/series-move/cold/read/af1af4b8987109ce1e335e538910fb3860b7c57eb3b6110a06aa2114e06d69a7.attachment created+1
......@@ -0,0 +1 @@
1Fictitious attachment for native corpus.
\ No newline at end of file
corpus/conflict-page/series-move/cold/read/environment.json created+7
......@@ -0,0 +1,7 @@
1{
2 "powershell": "5.1.14409.1005",
3 "schema": "xs2010",
4 "hostname": "ONE-M6-BAB2A5E1",
5 "cold": true,
6 "onenote": "14.0.4763.1000"
7}
corpus/conflict-page/series-move/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="{E6D580C3-6E50-4A08-B9DA-B976DE2770FE}{1}{B0}" path="C:\one-tests\runs\capture\notebook" lastModifiedTime="2026-09-27T16:04:40.000Z" color="#B49EDE"><one:Section name="synthetic" ID="{B0F302E0-C61B-06A2-3C37-A35B56777258}{1}{B0}" path="C:\one-tests\runs\capture\notebook\synthetic.one" lastModifiedTime="2026-09-27T16:04:40.000Z" color="#8AA8E4"><one:Page ID="{9CBAF166-4FD0-45B3-BB50-0BCAAA4F6E47}{1}{B0}" name="Fictitious: café, 東京, مرحبا" dateTime="2026-09-05T05:06:54.000Z" lastModifiedTime="2026-09-05T05:11:41.000Z" pageLevel="1"/><one:Page ID="{08D265CC-8347-4CC9-8ABB-B5BDC54649A9}{1}{B0}" name="Two" dateTime="2026-09-27T09:20:17.000Z" lastModifiedTime="2026-09-27T16:04:40.000Z" pageLevel="1"/><one:Page ID="{2D643D94-4CC0-4326-9B07-7B783F4F1C83}{1}{B0}" name="Four" dateTime="2026-09-27T09:20:17.000Z" lastModifiedTime="2026-09-27T16:04:40.000Z" pageLevel="1"/><one:Page ID="{87EBBA02-83AC-4AFC-BE62-8AEF052416BD}{1}{B0}" name="Three" dateTime="2026-09-27T09:20:17.000Z" lastModifiedTime="2026-09-27T16:04:40.000Z" pageLevel="1"/><one:Page ID="{60C97420-C761-4068-9063-162C9EE492E4}{1}{B0}" name="Target" dateTime="2026-09-27T09:20:18.000Z" lastModifiedTime="2026-09-27T16:04:40.000Z" pageLevel="1"/><one:Page ID="{8E5DEE12-6403-418F-82ED-4313DBB8033C}{1}{B0}" name="One" dateTime="2026-09-27T09:20:17.000Z" lastModifiedTime="2026-09-27T16:04:40.000Z" pageLevel="1"/></one:Section></one:Notebook>
corpus/conflict-page/series-move/cold/read/page-000.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{08D265CC-8347-4CC9-8ABB-B5BDC54649A9}{1}{B0}" name="Two" dateTime="2026-09-27T09:20:17.000Z" lastModifiedTime="2026-09-27T16:04:40.000Z" pageLevel="1" lang="en-US"><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="ONE-M6-327953DB" authorInitials="3DB" lastModifiedBy="ONE-M6-327953DB" lastModifiedByInitials="3DB" creationTime="2026-09-27T09:20:17.000Z" lastModifiedTime="2026-09-27T09:20:17.000Z" objectID="{D57AFE91-B2E5-4F3A-A2C7-C5A31F188D9C}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Two]]></one:T></one:OE></one:Title><one:Outline author="ONE-M6-327953DB" authorInitials="3DB" lastModifiedBy="ONE-M6-327953DB" lastModifiedByInitials="3DB" lastModifiedTime="2026-09-27T09:20:19.000Z" objectID="{D57AFE91-B2E5-4F3A-A2C7-C5A31F188D9C}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="86.58053588867187" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-27T09:20:17.000Z" lastModifiedTime="2026-09-27T09:20:17.000Z" objectID="{D57AFE91-B2E5-4F3A-A2C7-C5A31F188D9C}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Body Two.]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/conflict-page/series-move/cold/read/page-001.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{2D643D94-4CC0-4326-9B07-7B783F4F1C83}{1}{B0}" name="Four" dateTime="2026-09-27T09:20:17.000Z" lastModifiedTime="2026-09-27T16:04:40.000Z" pageLevel="1" lang="en-US"><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="ONE-M6-327953DB" authorInitials="3DB" lastModifiedBy="ONE-M6-327953DB" lastModifiedByInitials="3DB" creationTime="2026-09-27T09:20:18.000Z" lastModifiedTime="2026-09-27T09:20:18.000Z" objectID="{C06DD7A0-FF82-4C09-B154-4EF512147FEF}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Four]]></one:T></one:OE></one:Title><one:Outline author="ONE-M6-327953DB" authorInitials="3DB" lastModifiedBy="ONE-M6-327953DB" lastModifiedByInitials="3DB" lastModifiedTime="2026-09-27T09:20:19.000Z" objectID="{C06DD7A0-FF82-4C09-B154-4EF512147FEF}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="88.02534484863281" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-27T09:20:18.000Z" lastModifiedTime="2026-09-27T09:20:18.000Z" objectID="{C06DD7A0-FF82-4C09-B154-4EF512147FEF}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Body Four.]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/conflict-page/series-move/cold/read/page-002.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{60C97420-C761-4068-9063-162C9EE492E4}{1}{B0}" name="Target" dateTime="2026-09-27T09:20:18.000Z" lastModifiedTime="2026-09-27T16:04:40.000Z" pageLevel="1" lang="en-US"><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="ONE-M6-327953DB" authorInitials="3DB" lastModifiedBy="ONE-M6-327953DB" lastModifiedByInitials="3DB" creationTime="2026-09-27T09:20:18.000Z" lastModifiedTime="2026-09-27T09:20:18.000Z" objectID="{0D0D601F-DD08-4A88-A1BC-E090EDD88E26}{27}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Target]]></one:T></one:OE></one:Title><one:Outline author="ONE-M6-327953DB" authorInitials="3DB" lastModifiedBy="ONE-M6-327953DB" lastModifiedByInitials="3DB" lastModifiedTime="2026-09-27T09:22:40.000Z" objectID="{0D0D601F-DD08-4A88-A1BC-E090EDD88E26}{15}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="96.35589599609375" height="26.85543441772461"/><one:OEChildren><one:OE creationTime="2026-09-27T09:22:40.000Z" lastModifiedTime="2026-09-27T09:22:40.000Z" objectID="{0D0D601F-DD08-4A88-A1BC-E090EDD88E26}{13}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Body Target edited offline.]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/conflict-page/series-move/cold/read/page-003.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{87EBBA02-83AC-4AFC-BE62-8AEF052416BD}{1}{B0}" name="Three" dateTime="2026-09-27T09:20:17.000Z" lastModifiedTime="2026-09-27T16:04:40.000Z" pageLevel="1" lang="en-US"><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="ONE-M6-327953DB" authorInitials="3DB" lastModifiedBy="ONE-M6-327953DB" lastModifiedByInitials="3DB" creationTime="2026-09-27T09:20:17.000Z" lastModifiedTime="2026-09-27T09:20:17.000Z" objectID="{E6823DA8-A43B-4348-9715-D5C6EE92C571}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Three]]></one:T></one:OE></one:Title><one:Outline author="ONE-M6-327953DB" authorInitials="3DB" lastModifiedBy="ONE-M6-327953DB" lastModifiedByInitials="3DB" lastModifiedTime="2026-09-27T09:20:19.000Z" objectID="{E6823DA8-A43B-4348-9715-D5C6EE92C571}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="93.47699737548828" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-27T09:20:17.000Z" lastModifiedTime="2026-09-27T09:20:17.000Z" objectID="{E6823DA8-A43B-4348-9715-D5C6EE92C571}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Body Three.]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/conflict-page/series-move/cold/read/page-004.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{8E5DEE12-6403-418F-82ED-4313DBB8033C}{1}{B0}" name="One" dateTime="2026-09-27T09:20:17.000Z" lastModifiedTime="2026-09-27T16:04:40.000Z" pageLevel="1" lang="en-US"><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="ONE-M6-327953DB" authorInitials="3DB" lastModifiedBy="ONE-M6-327953DB" lastModifiedByInitials="3DB" creationTime="2026-09-27T09:20:17.000Z" lastModifiedTime="2026-09-27T09:20:17.000Z" objectID="{78DC856A-B60B-4888-BCB0-ACC38278F6DD}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[One]]></one:T></one:OE></one:Title><one:Outline author="ONE-M6-327953DB" authorInitials="3DB" lastModifiedBy="ONE-M6-327953DB" lastModifiedByInitials="3DB" lastModifiedTime="2026-09-27T09:20:19.000Z" objectID="{78DC856A-B60B-4888-BCB0-ACC38278F6DD}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="86.09180450439453" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-27T09:20:17.000Z" lastModifiedTime="2026-09-27T09:20:17.000Z" objectID="{78DC856A-B60B-4888-BCB0-ACC38278F6DD}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Body One.]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/conflict-page/series-move/cold/read/page-005.xml created+26
......@@ -0,0 +1,26 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{9CBAF166-4FD0-45B3-BB50-0BCAAA4F6E47}{1}{B0}" name="Fictitious: café, 東京, مرحبا" dateTime="2026-09-05T05:06:54.000Z" lastModifiedTime="2026-09-05T05:11:41.000Z" pageLevel="1" lang="en-US"><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:Outline author="snow" authorInitials="S" lastModifiedBy="snow" lastModifiedByInitials="S" lastModifiedTime="2026-09-05T05:06:56.000Z" objectID="{FB7659DA-04A5-4605-B4A2-871155D38B26}{10}{B0}"><one:Position x="36.0" y="14.40000057220459" z="0"/><one:Size width="127.5136947631836" height="14.30000114440918"/><one:OEChildren><one:OE creationTime="2026-09-05T05:06:55.000Z" lastModifiedTime="2026-09-05T05:06:56.000Z" objectID="{FB7659DA-04A5-4605-B4A2-871155D38B26}{11}{B0}" alignment="left" quickStyleIndex="0" style="font-size:11.0pt;color:#1F4E79"><one:T><![CDATA[<span
3style='font-weight:bold;font-family:Calibri' lang=en-US>Fictitious: café, </span><span
4style='font-weight:bold;font-family:SimSun' lang=en-US>東京</span><span
5style='font-weight:bold;font-family:Calibri' lang=en-US>, </span><span
6style='font-weight:bold;font-family:Arial;direction:rtl;unicode-bidi:embed'
7lang=ar-SA>مرحبا</span>]]></one:T></one:OE></one:OEChildren></one:Outline><one:InkDrawing lastModifiedTime="2026-09-05T05:11:40.000Z" objectID="{D99B7548-5C4D-48B6-A93A-25999553E6F2}{15}{B0}"><one:Position x="421.5118103027344" y="84.75590515136718" z="5"/><one:Size width="60.00945281982422" height="60.00944519042969"/><one:Data>AK4FHQSiAaIBAWAqABofi0JwRYR1gL7QRdkE+oeVMvLsF0G4wBa/8yv0et67E4vlXrNInJuhJVq3
8URK/7HHMzCKxQYkOuxMs7nqhWM9UiuaXxU+PBvi60uGbIsRmbacNslhJmh1OQDQGbBADBkgQRSNG
9IwUIC2VPZmdoZGkZFDIIAIAeAiHi4kEzCADwEAKLxeJBZAMVRgBACpUE/QGH81d3mq7mkzgM0mcB
10mk1gEBgEBgEBgE1mUAgMzmUAmsygE1mUzmkBmc0gMzmk1mUAmsyTOaTWZQCazKZgALSmiazKATWZ
11QCAwCAwBAZpM4DAJlNYBMprAJlNZpM4DNJmmU1mkzgM0mcBmkzmU1gEyAAFpTSAzOaQGZzRAYBAY
12BAYBMprAIDNJnAZpM0yms0mcBmkzgM0mcymsAmU1gEyms0maZAACZTSawCZTWATKawCAoBAYBAZn
13NIDAJrMoBNZlAJrMpnMoBNZlAJrMpnNIDM5pAZnNJrMkzmk1AACH8C7XgWnmkzgM0msAmU1gEBgE
14BgEBTOaQGATWZQCazKATWZTOaTWZTNNJrMpmmUzTSaplM00mqZTOaTVMpmmk1TKATKazSawCAzSZ
15wGAQFAIDAJrMoBAZnNIDM5pAZnMpnNJrMpmmk1mUzTSaplM00mqZTNNJrMpmmk1TKZplhuAzKATW
16ZQCazKAIDAIDAIDNJnAYBMprAJlM4DNJnMprNJnMk1mkzmSazRM5kms0TOZJnMprNEzmSazQtKaQ
17GZzRNZlAIDAIDAIDAJlNYAmU1gEymsAmU1mkzmU1miZzKazRM5kmcyTWaJnMk1mkzmSazRM5kAUU
18RgBAAAAJBAUURgAAAAASABEgXhT+65lz/EiPi+8SFvjqCAk+gEcDAa/89Qd0AxVGAEAKABEg2R87
19QQrSFUA=</one:Data></one:InkDrawing><one:InkDrawing lastModifiedTime="2026-09-05T05:11:41.000Z" objectID="{D99B7548-5C4D-48B6-A93A-25999553E6F2}{23}{B0}"><one:Position x="504.0" y="92.23936462402343" z="7"/><one:Size width="30.01890563964844" height="45.04251861572266"/><one:Data>AOECHQJSegFgKgAaH4tCcEWEdYC+0EXZBPqHlTLy7BdBuMAWv/Mr9HreuxOL5V6zSJyboSVat1ES
20v+xxzMwisUGJDrsTLO56oVjPVIrml8VPjwb4utLhmyLEZm2nDbJYSZodTkA0BmwQAwZIEEUjRiMF
21CAtlT2ZnaGRpGRQyCACAHgIh4uJBMwgA8BACi8XiQWQDFUYAQArKAUuH88s3nkzmkzgM0mcBmkzg
22KAQGAQGATWZQCAzOaQGZzKATWZTOaQGZzSAzOaTWZQCazJM5pNZlAJrMpmAAAACH8D9XgeBJlM0z
23mRNZpNZpM4DAJlNYBAUAgMAgMzmkBgE1mUAmsyTOaTWZTOaTVMpnNJqmUzTSaplM00mqZTOZTNNJ
24qmUzTSagBRRGAIAAAAkEBRRGAAAAABIAESDPTQ4xwIZyTqQ8FVDbHxeKCj9AI5rARvPPUDugAxVG
25AEAKABEgLMlfQdkfI0A=</one:Data></one:InkDrawing><one:Outline author="snow" authorInitials="S" lastModifiedBy="snow" lastModifiedByInitials="S" lastModifiedTime="2026-09-05T05:06:57.000Z" objectID="{ADC685CF-B7F0-4C58-AE14-0599F1DF6F6F}{10}{B0}"><one:Position x="144.0" y="96.0" z="1"/><one:Size width="167.0449523925781" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-05T05:06:57.000Z" lastModifiedTime="2026-09-05T05:06:57.000Z" objectID="{ADC685CF-B7F0-4C58-AE14-0599F1DF6F6F}{11}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Fictitious positioned outline.]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="snow" authorInitials="S" lastModifiedBy="snow" lastModifiedByInitials="S" lastModifiedTime="2026-09-05T05:06:58.000Z" objectID="{90EFED40-516A-45F6-9864-AE6D1DB227E1}{10}{B0}"><one:Position x="144.0" y="192.0" z="2"/><one:Size width="72.0" height="0.750005722045898"/><one:OEChildren><one:OE creationTime="2026-09-05T05:06:58.000Z" lastModifiedTime="2026-09-05T05:06:58.000Z" objectID="{90EFED40-516A-45F6-9864-AE6D1DB227E1}{11}{B0}" alignment="left"><one:Image format="png" originalPageNumber="0"><one:Data>iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAusB9Y9J1uoA
26AAAASUVORK5CYII=</one:Data></one:Image></one:OE></one:OEChildren></one:Outline><one:Outline author="snow" authorInitials="S" lastModifiedBy="snow" lastModifiedByInitials="S" lastModifiedTime="2026-09-05T05:06:59.000Z" objectID="{15F5F520-9712-4630-BDC9-C9932963E8D2}{10}{B0}"><one:Position x="264.0" y="192.0" z="3"/><one:Size width="72.00001525878906" height="63.0"/><one:OEChildren><one:OE creationTime="2026-09-05T05:06:59.000Z" lastModifiedTime="2026-09-05T05:06:59.000Z" objectID="{15F5F520-9712-4630-BDC9-C9932963E8D2}{11}{B0}" alignment="left"><one:InsertedFile pathCache="C:\Users\clover\AppData\Local\Microsoft\OneNote\14.0\OneNoteOfflineCache_Files\458001d8-0f1e-451f-81cb-621828fc0b39.txt" pathSource="C:\one-tests\runs\20260905-05\assets\fictitious-attachment.txt" preferredName="fictitious-attachment.txt"/></one:OE></one:OEChildren></one:Outline><one:Outline author="snow" authorInitials="S" lastModifiedBy="snow" lastModifiedByInitials="S" lastModifiedTime="2026-09-05T05:07:00.000Z" objectID="{3B2A8C70-F682-4DB0-A2C1-2BC601301394}{10}{B0}"><one:Position x="144.0" y="312.0" z="4"/><one:Size width="92.42181396484374" height="21.94773101806641"/><one:OEChildren><one:OE creationTime="2026-09-05T05:07:00.000Z" lastModifiedTime="2026-09-05T05:07:00.000Z" objectID="{3B2A8C70-F682-4DB0-A2C1-2BC601301394}{11}{B0}" alignment="left"><one:Table bordersVisible="true" lastModifiedTime="2026-09-05T05:07:00.000Z" objectID="{3B2A8C70-F682-4DB0-A2C1-2BC601301394}{12}{B0}"><one:Columns><one:Column index="0" width="39.14614105224609"/><one:Column index="1" width="45.14567184448242"/></one:Columns><one:Row objectID="{3B2A8C70-F682-4DB0-A2C1-2BC601301394}{13}{B0}" lastModifiedTime="2026-09-05T05:07:00.000Z"><one:Cell lastModifiedTime="2026-09-05T05:07:00.000Z" objectID="{3B2A8C70-F682-4DB0-A2C1-2BC601301394}{14}{B0}" lastModifiedByInitials="S"><one:OEChildren><one:OE creationTime="2026-09-05T05:07:00.000Z" lastModifiedTime="2026-09-05T05:07:00.000Z" objectID="{3B2A8C70-F682-4DB0-A2C1-2BC601301394}{17}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Left cell]]></one:T></one:OE></one:OEChildren></one:Cell><one:Cell lastModifiedTime="2026-09-05T05:07:00.000Z" objectID="{3B2A8C70-F682-4DB0-A2C1-2BC601301394}{22}{B0}" lastModifiedByInitials="S"><one:OEChildren><one:OE creationTime="2026-09-05T05:07:00.000Z" lastModifiedTime="2026-09-05T05:07:00.000Z" objectID="{3B2A8C70-F682-4DB0-A2C1-2BC601301394}{25}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Right cell]]></one:T></one:OE></one:OEChildren></one:Cell></one:Row></one:Table></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/conflict-page/series-move/cold/read/payloads.json created+10
......@@ -0,0 +1,10 @@
1[
2 {
3 "sha256": "af1af4b8987109ce1e335e538910fb3860b7c57eb3b6110a06aa2114e06d69a7",
4 "name": "fictitious-attachment.txt",
5 "object": "{15F5F520-9712-4630-BDC9-C9932963E8D2}{11}{B0}",
6 "kind": "InsertedFile",
7 "page": "{9CBAF166-4FD0-45B3-BB50-0BCAAA4F6E47}{1}{B0}",
8 "bytes": 43
9 }
10]
\ No newline at end of file
corpus/conflict-page/series-move/cold/run.json created+18
......@@ -0,0 +1,18 @@
1{
2 "notebook": "/Users/clo/dev/one/evidence/series/empty-series",
3 "expected_pages": 6,
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/conflict-page/series-move/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/conflict-page/series-move/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/conflict-page/series-move/cold/source.json created+8
......@@ -0,0 +1,8 @@
1[
2 {
3 "path": "synthetic.one",
4 "bytes": 67768,
5 "sha256": "7c55e483f464d329e7bb394813d202bc1295f0a24ecc895a3c81fa3b582a02bd",
6 "mtime_ns": 1790524980196111805
7 }
8]
corpus/conflict-page/series-move/cold/teardown.json created+1
......@@ -0,0 +1 @@
1{"absent": true}
corpus/notebook-management/README.md created+38
......@@ -0,0 +1,38 @@
1# Notebook management
2
3`candidate` is the notebook `a_notebook_is_managed_as_onenote_manages_one` in
4`crates/snowbound/src/manage.rs` makes through the calls the app makes: `Notebook::create`
5(a table of contents in the notebook colour OneNote gave new notebooks, and "New Section 1"
6holding a page with OneNote's title date and time fields); new sections in OneNote's
7new-section colour order and groups; pages created with `SectionOp::Create`, titled with
8`Text`, given our Ivy art as a background picture (`template_ops`) or the Teal page colour
9(`PageOp::Color`), and made a subpage; a page given Informal Meeting Notes (the art and
10the template's outlines, lowered to ops from the page model `meeting.rs` builds); a page deleted to the recycle bin
11(`Notebook::recycle_pages`, then `SectionOp::Delete`); a page moved to another section
12as a drop on its tab moves it (`notebook::session::moved`, then `SectionOp::Delete`); a section renamed and moved into a
13group, the group renamed, a group and a section deleted to the recycle bin, and the root
14reordered.
15
16`cold` is its fresh OneNote 2010 read: the hierarchy lists every section, group and page
17where the app put it, with its colour; the recycle bin holds "Deleted Pages"
18(`isDeletedPages`) with the deleted page, and the deleted group's and section's files; the
19Teal page reads back `color="#D4F9F2"`, the Ivy page one background image, the Meeting
20page OneNote's four outlines with their numbering, to-do tag and bullets, and the
21screenshots show the art, the colour and each title's date and time. OneNote left the
22files' identities as written. `tools/test_notebook_management.py` checks this without a VM.
23
24`native` is what OneNote 2010 did through its own interface on the VM. `new-notebook`:
25File, New made "New Section 1" with an "Untitled page" titled with the date and time
26(`created`); New Section named sections "New Section N"; a section dragged onto a group
27moved into its folder (`moved`); deleting a page copied it into
28`OneNote_RecycleBin/OneNote_DeletedPages.one` (grey) with its identity, title and
29creation time, and deleting a group moved its sections into the recycle bin and removed
30its folder (`final`). `section-colors`: sixteen sections made with New Section, whose
31colours are the order new sections take. `page-color`: View, Page Color stores
32`0x14001d2a` (COLORREF) on the page node and "No color" removes it; `colors.txt` is each
33of the sixteen colours as the page XML reports it, in the menu's order. `meeting-template`
34is the page XML of a page made from Business, Informal Meeting Notes.
35
36Regenerate with `SNOWBOUND_MANAGEMENT_EXPORT` set to a new directory while running the
37test, then `tools/native_runner.py OUTPUT COLD --expected-pages -1 --collect-notebook
38--screenshots`.
corpus/notebook-management/candidate/Archive/Inner.one created
Binary files /dev/null and b/corpus/notebook-management/candidate/Archive/Inner.one differ
corpus/notebook-management/candidate/Archive/Kitchen.one created
Binary files /dev/null and b/corpus/notebook-management/candidate/Archive/Kitchen.one differ
corpus/notebook-management/candidate/Archive/Open Notebook.onetoc2 created
Binary files /dev/null and b/corpus/notebook-management/candidate/Archive/Open Notebook.onetoc2 differ
corpus/notebook-management/candidate/New Section 1.one created
Binary files /dev/null and b/corpus/notebook-management/candidate/New Section 1.one differ
corpus/notebook-management/candidate/OneNote_RecycleBin/Binned.one created
Binary files /dev/null and b/corpus/notebook-management/candidate/OneNote_RecycleBin/Binned.one differ
corpus/notebook-management/candidate/OneNote_RecycleBin/Gone.one created
Binary files /dev/null and b/corpus/notebook-management/candidate/OneNote_RecycleBin/Gone.one differ
corpus/notebook-management/candidate/OneNote_RecycleBin/OneNote_DeletedPages.one created
Binary files /dev/null and b/corpus/notebook-management/candidate/OneNote_RecycleBin/OneNote_DeletedPages.one differ
corpus/notebook-management/candidate/OneNote_RecycleBin/Open Notebook.onetoc2 created
Binary files /dev/null and b/corpus/notebook-management/candidate/OneNote_RecycleBin/Open Notebook.onetoc2 differ
corpus/notebook-management/candidate/Open Notebook.onetoc2 created
Binary files /dev/null and b/corpus/notebook-management/candidate/Open Notebook.onetoc2 differ
corpus/notebook-management/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-C64C87EA -ExpectedPages -1 -KeepOpen", "exit": 0, "stdout": "Read 6 sections and 11 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/notebook-management/cold/machine.json created+1
......@@ -0,0 +1 @@
1{"name": "m6-c64c87ea", "hostname": "ONE-M6-C64C87EA"}
corpus/notebook-management/cold/notebook/Archive/Inner.one created
Binary files /dev/null and b/corpus/notebook-management/cold/notebook/Archive/Inner.one differ
corpus/notebook-management/cold/notebook/Archive/Kitchen.one created
Binary files /dev/null and b/corpus/notebook-management/cold/notebook/Archive/Kitchen.one differ
corpus/notebook-management/cold/notebook/Archive/Open Notebook.onetoc2 created
Binary files /dev/null and b/corpus/notebook-management/cold/notebook/Archive/Open Notebook.onetoc2 differ
corpus/notebook-management/cold/notebook/New Section 1.one created
Binary files /dev/null and b/corpus/notebook-management/cold/notebook/New Section 1.one differ
corpus/notebook-management/cold/notebook/OneNote_RecycleBin/Binned.one created
Binary files /dev/null and b/corpus/notebook-management/cold/notebook/OneNote_RecycleBin/Binned.one differ
corpus/notebook-management/cold/notebook/OneNote_RecycleBin/Gone.one created
Binary files /dev/null and b/corpus/notebook-management/cold/notebook/OneNote_RecycleBin/Gone.one differ
corpus/notebook-management/cold/notebook/OneNote_RecycleBin/OneNote_DeletedPages.one created
Binary files /dev/null and b/corpus/notebook-management/cold/notebook/OneNote_RecycleBin/OneNote_DeletedPages.one differ
corpus/notebook-management/cold/notebook/OneNote_RecycleBin/Open Notebook.onetoc2 created
Binary files /dev/null and b/corpus/notebook-management/cold/notebook/OneNote_RecycleBin/Open Notebook.onetoc2 differ
corpus/notebook-management/cold/notebook/Open Notebook.onetoc2 created
Binary files /dev/null and b/corpus/notebook-management/cold/notebook/Open Notebook.onetoc2 differ
corpus/notebook-management/cold/read/environment.json created+7
......@@ -0,0 +1,7 @@
1{
2 "powershell": "5.1.14409.1005",
3 "schema": "xs2010",
4 "hostname": "ONE-M6-C64C87EA",
5 "cold": true,
6 "onenote": "14.0.4763.1000"
7}
corpus/notebook-management/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="{70993894-E6A7-462C-8C02-1FA8F1ACA3E1}{1}{B0}" path="C:\one-tests\runs\capture\notebook" lastModifiedTime="2026-09-27T15:07:05.000Z" color="#91BAAE"><one:Section name="New Section 1" ID="{68FD0F6B-1DD3-03A5-12C1-2578DB3C46E0}{1}{B0}" path="C:\one-tests\runs\capture\notebook\New Section 1.one" lastModifiedTime="2026-09-27T15:07:05.000Z" color="#8AA8E4"><one:Page ID="{C8939848-C2F8-029B-283F-6182C86D398F}{1}{B0}" name="Garden plan" dateTime="2026-09-27T15:04:13.000Z" lastModifiedTime="2026-09-27T15:06:55.000Z" pageLevel="1"/><one:Page ID="{0F7A8204-AF88-034B-305F-232311F64E21}{1}{B0}" name="Ivy page" dateTime="2026-09-27T15:05:18.000Z" lastModifiedTime="2026-09-27T15:06:55.000Z" pageLevel="1"/><one:Page ID="{B3F3B40B-51ED-0DAC-3B9A-41F9193141F1}{1}{B0}" name="Teal page" dateTime="2026-09-27T15:05:18.000Z" lastModifiedTime="2026-09-27T15:06:55.000Z" pageLevel="1"/><one:Page ID="{B165F185-8BBE-02BF-0EF8-0B851D19283C}{1}{B0}" name="Subpage" dateTime="2026-09-27T15:05:18.000Z" lastModifiedTime="2026-09-27T15:06:55.000Z" pageLevel="2"/><one:Page ID="{FCDE8FFE-7639-038D-395D-6F3F40481CAC}{1}{B0}" name="Meeting page" dateTime="2026-09-27T15:05:18.000Z" lastModifiedTime="2026-09-27T15:06:55.000Z" pageLevel="1"/></one:Section><one:SectionGroup name="Archive" ID="{93C6E7AF-50B0-479B-9C6F-DABC159EC50C}{1}{B0}" path="C:\one-tests\runs\capture\notebook\Archive" lastModifiedTime="2026-09-27T15:06:55.000Z"><one:Section name="Inner" ID="{E4466A43-A109-04F9-2291-12D8915FD9BD}{1}{B0}" path="C:\one-tests\runs\capture\notebook\Archive\Inner.one" lastModifiedTime="2026-09-27T15:06:55.000Z" color="#8AA8E4"><one:Page ID="{47477E0D-48A7-0136-0152-C6779571DCE0}{1}{B0}" name="Untitled page" dateTime="2026-09-27T15:05:18.000Z" lastModifiedTime="2026-09-27T15:06:55.000Z" pageLevel="1"/></one:Section><one:Section name="Kitchen" ID="{2E10BD18-D018-0558-107F-68D5FEEF2F03}{1}{B0}" path="C:\one-tests\runs\capture\notebook\Archive\Kitchen.one" lastModifiedTime="2026-09-27T15:06:55.000Z" color="#F6B078"><one:Page ID="{55E20DD4-C6DF-0DF3-0618-FE208667B93B}{1}{B0}" name="Untitled page" dateTime="2026-09-27T15:05:18.000Z" lastModifiedTime="2026-09-27T15:06:55.000Z" pageLevel="1"/><one:Page ID="{7AE713B6-6C9E-01DB-2CAE-88CD81372C8D}{1}{B0}" name="Moved page" dateTime="2026-09-27T15:05:19.000Z" lastModifiedTime="2026-09-27T15:06:55.000Z" pageLevel="1"/></one:Section></one:SectionGroup><one:SectionGroup name="OneNote_RecycleBin" ID="{FA845BC4-0B06-480C-B62E-F2E30719A795}{1}{B0}" path="C:\one-tests\runs\capture\notebook\OneNote_RecycleBin" lastModifiedTime="2026-09-27T15:06:56.000Z" isRecycleBin="true"><one:Section name="Deleted Pages" ID="{CCB7F5CF-E701-0643-1A8A-E4CFF201198D}{1}{B0}" path="C:\one-tests\runs\capture\notebook\OneNote_RecycleBin\OneNote_DeletedPages.one" lastModifiedTime="2026-09-27T15:06:55.000Z" color="#E1E1E1" isInRecycleBin="true" isDeletedPages="true"><one:Page ID="{62BD21F9-A2BA-005E-1F59-EF1CDF7BEEA2}{1}{B0}" name="Deleted page" dateTime="2026-09-27T15:05:18.000Z" lastModifiedTime="2026-09-27T15:06:55.000Z" pageLevel="1" isInRecycleBin="true"/></one:Section><one:Section name="Gone" ID="{CBFCDFB4-D189-08C9-2EB4-3D3131AAD0E3}{1}{B0}" path="C:\one-tests\runs\capture\notebook\OneNote_RecycleBin\Gone.one" lastModifiedTime="2026-09-27T15:06:56.000Z" color="#8AA8E4" isInRecycleBin="true"><one:Page ID="{74F191CB-FE67-09DF-356B-4A5D4126CC00}{1}{B0}" name="Untitled page" dateTime="2026-09-27T15:05:18.000Z" lastModifiedTime="2026-09-27T15:06:56.000Z" pageLevel="1" isInRecycleBin="true"/></one:Section><one:Section name="Binned" ID="{9F69E8FA-CEF1-0531-3CE4-9BB1106D4840}{1}{B0}" path="C:\one-tests\runs\capture\notebook\OneNote_RecycleBin\Binned.one" lastModifiedTime="2026-09-27T15:06:56.000Z" color="#D5A4BB" isInRecycleBin="true"><one:Page ID="{3558FDF0-CC7B-0FEE-2928-F5AACC9D6CC6}{1}{B0}" name="Untitled page" dateTime="2026-09-27T15:05:18.000Z" lastModifiedTime="2026-09-27T15:06:56.000Z" pageLevel="1" isInRecycleBin="true"/></one:Section></one:SectionGroup></one:Notebook>
corpus/notebook-management/cold/read/page-000.navigation.json created+13
......@@ -0,0 +1,13 @@
1{
2 "exit": 0,
3 "stdout": "",
4 "stderr": "",
5 "w": 800,
6 "h": 600,
7 "error": null,
8 "win": {
9 "title": "Ivy page - Microsoft OneNote",
10 "class": "Framework::CFrame",
11 "dialog": false
12 }
13}
\ No newline at end of file
corpus/notebook-management/cold/read/page-000.png created
Binary files /dev/null and b/corpus/notebook-management/cold/read/page-000.png differ
corpus/notebook-management/cold/read/page-000.xml created+353
......@@ -0,0 +1,353 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{0F7A8204-AF88-034B-305F-232311F64E21}{1}{B0}" name="Ivy page" dateTime="2026-09-27T15:05:18.000Z" lastModifiedTime="2026-09-27T15:06:55.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" font="Calibri" fontSize="17.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="Rust Author" authorInitials="RA" lastModifiedBy="Rust Author" lastModifiedByInitials="RA" creationTime="2026-09-27T15:05:18.000Z" lastModifiedTime="2026-09-27T15:05:18.000Z" objectID="{0F7A8204-AF88-034B-305F-232311F64E21}{15}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Ivy page]]></one:T></one:OE></one:Title><one:Image format="jpg" backgroundImage="true" lastModifiedTime="2026-09-27T15:05:18.000Z" objectID="{8718E711-00F2-0E79-2027-EC9413478A5F}{1}{B0}"><one:Position x="-27.0" y="-3.599999666213989" z="0"/><one:Size width="174.5" height="640.0" isSetByUser="true"/><one:Data>/9j/4AAQSkZJRgABAgAAAQABAAD//gAYU25vd2JvdW5kIHRlbXBsYXRlIGl2ef/AABEIAxgA2AMB
3EQACEQEDEQH/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsL
4EBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQU
5FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQID
6BAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHB
7FVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2
8d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna
94eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1
10EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ0
114SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeI
12iYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery
138/T19vf4+fr/2gAMAwEAAhEDEQA/AP1ToAKAOS8f+KbvwbFYamkX2nThL5V3EB8wDfdcH2wRjoc1
145GYYqpg+SqleN7NfkzGtV9jDnauup0el6nbazp8F7aSCW2nUOjjuK9KlVhXgqkHdM1TUldbHK/Cf
15/kW7r/sIXH/odeblf8F/4pfmcGB/hv1Z2leuegFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAB
16QAUAFABQAUAFABQBW1HTrbVrGazu4lntpl2PG3QisqtKFaDpzV0xNKSszmNP0uP4X+ENUZLh7y1t
17vMuIUkGCgxwme/PfjrXlU6X9l4ao+bmSu1/l95lCEcPTstlf/Mz/AIM3Dt4GM03+ta6mZsjHzFuf
181qMok3hOZ73Zx4Bv2Lb7s7yBzJErHqRXtxd0ekSVQBQAUAFABQAUAFABQAUAFABQAUAFABQAUAFA
19BQAUAFABQAUAFADZHWJGdyFVQSWPQCk2oq7ASGZLiJZInWSNxlXQ5DD1BpRkppSi7oDn4/FunXmt
203+g6gi211EC3lXGDHPFjO5SeDx1HbB64zXmrGUZ1Z4asrNd9mt7/AHb/APAJU1z8iepj/C8ed4Su
219ufmv7gjj/brDLfew7a/mf5nDg1+6a83+Z3ESeXGq+gr2krI9AZ9oVpNi5Y98dBU82tkFyarAKAC
22gAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgBCAwIIyD2NG4HkFrf6j8J/GI0+5Ly+F7+
23U+Q7ZIhLHoD2weCO45r46E6mUYn2Uv4Unp5f8N17rU83mnh63LL4JbeT7eh1/ivwtb+MNQSVVMd1
24puDFdREK3mnDKpJB+UDkjB+9x3B9PGYVY6p7u8Ovnul6Ld+unVP03Sg+WUt07ry/4crfClhH4cnE
25gDZv7gb8cZ31eWaUXzfzP8zz8F/Dfq/zOz3gswUHaOCe1evfsd5IkaxjCgCrSS2AfTAKACgAoAKA
26CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDGu/GGi6fqDWN3qMFrdLg+XO2zIPcE4B/CuGeNw
279Obpzmk/PQlyinZtXIPFHiPw/p2j+bq9xay2UudsbYk83H91ec1ni8VhIUr12nF9N7+iCUlTXNJ2
28RzHgb4mw6/dw6fY6PfTb2Lz3QVRHGWJJJ56DOB344FeTl2ZKs1ShTbb1b0sr6v5L/hjOOJhXn7id
29u9tC98Kw58Pz44UX9znHf5+ld2Wp+yf+KX5nLgf4b9WdkgckqfuZyDjH4V6yu9D0AnhkY5jkK+3a
30nJN7CYsJlHEij/eFC5uoK/UmqxhQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQBzPjfw
31Hp/jiwEVyPJuowfJukHzJ7e49q83G4CnjY2lpJbP+uhz16EMRHlmeG6r4L8WeA5J9kU01kwKtLbf
32vIXU/wB5e34ivhcRgsTg+bmT5e61X9eqPHjRxuDlej7y/rp/ke3fD3xUfFGjbpdPk027gIWWExFE
33J7FMjpx07fln7bLsX9apax5Wt9LL5f1oe3SqSqwUpRafZlD4USn+w7iMDj7dckn/AIGajLH+6a/v
34S/M48C/3b9X+Z2lyWWIsnVea9eV7aHoMdE/mRq3qKad1cY+mAUAFABQAUAFABQAUAFABQAUAFABQ
35AUAFABQAUAFABQAUAFAFW81Oz05d11dQWw9ZpAv86xqVqdL+JJL1dgMbU/Eujalpt3bQavYtPJEw
36QC4TO7HHf1xXn4jFYetRnCFRXadtVv0KpySktTctLpb2yhuYsMssYkT3BGRXo06iq01Uj1VxNcrs
37zi/g3E8fhKTzcGYXk6uR6huf1rycoTWH97e7POwX8N+rO6r2z0BEQRrgdKSVgHUwCgAoAKACgAoA
38KACgAoAKACgAoAKACgAoAKACgAoAKACgDP1zSTrenvai8urAtz51pJsce2fSubEUPrEOTmcfNOzB
39q6seN678AtXed5bPVYr7P/P2WV/z5zXyFbIq6d6clL10f6niVsulUd1Ub9f6/Qx4PgP4mlkCv9jh
40Xu7TZx+QrmWS4xuzSXzOVZVUvrJfieo/DTwZL4Ma7tLjUp7qbapEOSIAp/iVT3yCPw96+hyvBywc
41pwnLXt0s+q873X/Dnv0KHsKaXM5evQn+E/8AyLd1/wBhC4/9Drpyv+C/8UvzOXA/w36s7OvXPQFo
42AKACgBKAFoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAKl9ZtP5csJCXMOTG56c9V
43Psf8D1Arnq03O0oaSW3+T8n/AMHdFRdtHscp8JCW8MXBKlSb+4yp7fP0rz8qd6Dv/M/zPNwX8N+r
44OuvSRASOCCDmvVnsd72FtbgTp/tDqKIyuCdyerGFAFO5nxcxoOgIzWUnrYlvWxcrUoKAEoAiNyvm
45BF+Zj6dqhy6IVyarGFABQAUAFABQAUAFABQAUAFABQAUAFABQAnSgBEdZEDIwZT0KnINJNSV0Bxv
46wn/5Fu6/7CFx/wCh15OV/wAF/wCKX5nn4H+G/VnYTp5kLj2r1ZK6PQ3MuGUwyBh26iudOxinZmur
47BlBHQ11J3NhaAMkHzbr6tXNuzLeRrV0mohOBk0AZ11eGQ7U4T+dYSlczcuxLYQYHmHv0qoLqOKLt
48alhQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAHnGreDtd8Ma2dU8JzB7WVt1xpMr4jJ77AeB+hH6
49V8zVwWIwlX22B2e8en9fijknTqxnz03p1T2+XY0PhE5k8LTsylGa+uCUPVTv6V3ZU70G3/M/zMsF
50/Dfqztq9g9Ay7uHyZT/dPIrnkrMykrFuwfdDj+6a0g9C47FqtCijbW5FyxPRTxWMY6kJa3L1bFlL
51UJsARjvyaym+hEmQWtqZmyeEH61EY3JjG5pgYGB0FdBqLQAUAFABQAUAFABQAUAFABQAUAFABQAU
52AFABQBn63rdr4esGvb0ulshAeRELbM9yBzj3rnxGIhhoe0qbfeJtRTb2OX+EM6XHhaaSNgyPezup
539QX4NedlUlKg2u7/ADODAu9J+rO4r2T0BksSyptYUmrhuRW0P2bcCc5PGKiK5dxJWJdzHov5mqu+
54wxcsP4R+Bo1AAwJx0PoadwImtFklLtk+1TyXd2KxMBgYHAqxi0AJmgAoAWgAoAKACgAoAKACgAoA
55KACgAoAKACgAoAjngjuYXilRZIpFKsjDIYHqDUyippxkrpgeffC61+zeF5BCCI4rydBjsA/FeHls
56eWg0tk3+Z5eDVqbt3Z21tfHIWTkf3q9iM+56Cl3LrHHTqa1bNAC4+vrQkA6mAUAV/PEk/ljkDqaz
57vd2FfUmU84PX+dWuwxJZREhY0N2DYzpbySQ8HaPQVg5NmTk2JHBLMeAfqaSTYWbLtvaiHkks1bRh
58Y0SsWKsYUAFABQAUAFABQAUAFABQAUAFABQAUAFAHFfCf/kW7r/r/uP/AEOvIyz+C/8AFL8zz8D/
59AA36s657SKQ524PtXqOCZ3tJj4l2jvgcDPpTihjLgyoN0ZzjquKUrrVCd+hFFqAJxINvuKlT7kqR
60PcSbIGYenBq5PS5T0INPiIBkPfgVEF1Jiiy/GD6GrfcsdVAJsA7ClZAOpgFABQAUAFABQAUAFABQ
61AUAFABQAUAFABQAUAFAHF/Cf/kW7r/sIXH/odeRlf8F/4pfmefgf4b9WdnXrnoABgUALQBC0Ecjs
62WUcVHKmwsL+78j/pnRpbyAEuI3OFYfSmpJivcc/QD1IoYx1UBEbuJT98fhU8yFdDkmST7rA+1Ckm
63MkqgCgAoAKACgAoAKACgAoAKACgAoAKAGSyLDE8jnCICxPoBSk1FNvoBwt98bfC1lKUW4nuSDgmG
64E4/XFeFPO8JF2V36L/OxxTxmHg7OX5mn4e+Jvh7xNcLb2l8EuW4WGdSjMfQZ4P4GunD5nhsTLkjK
65z7PT/gGtPEUq2kJXKvwn/wCRbuv+whcf+h1OV/wX/il+Zz4H+G/VnaV656AUAFAFK/kK/IP4utYz
66ZMn0LFumyBVPpWkVZDWhXmsB95G2+xqJQ7EuPYltllHEnOOhpxv1KV+pPWgynLZeYMpww4IPeseS
67+xMo3KjwvEfmUj3rNpozs0TQXrRnDfMv6iqUmilLuaEciyLuU5Fbp3NB1MAoAKACgAoAKACgAoAK
68ACgAoAKAOC8Y/B3R/FMz3URbTb5+WlhAKOfVl/qMV4OLyijiXzwfLL8Pu/yOKvg6WI1krPujk7D9
69ndku1a71oGBSDiCHa5/Ek4/WvLhkEub36mnktTjhlcIyu5v8jsvhFH5XhadMs22+uBljkn5+5r2s
70qXLQa/vP8zpwP8N+rO1ZwgyxAHvXrt2PQI1uo3farZJ9BU8yYromqxkBtg9wZG5x0FRy3d2K2tyX
71YO2R9DTsMAgB9frTsA6mAxZVZioI3DtSumADh2HrzQtwHUwGmND1UH8KVkAqoqdAB9KEkgHUwCgA
72oAKACgAoAKACgAoAKACgAoAKACgDg/hhdCDw1cgcub+4/wDQ68XLpWov/FL8zzcG7Un6s6XEly/d
73j/KvR1kdmsi/a2ogGTy571tGNjRKxYqyhMjOM8jtRcBaAEyM47+lAC0AZ19GUl3jv396wmrMzl3J
74bS58xlVvvDIz604yu9SoyuXK2KCgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAEoA4f4TW8f/AAjU
75+Ru231wAWOT9+vGyuK9g/wDE/wAzz8F/DfqzuAAowBge1eyegLQBXu7nyFwPvn9KiUrEt2ItOyzS
76Mec4qICiXa2LM6ecpebv7vFYN+8Zt2ZoA5Fbmg2WMSoVPek1cNzMkje1lHtyD61ztOLMbcrNSN/M
77QMO4roTujYdTAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA4v4T/wDIt3X/AGELj/0OvIyv+C/8
78UvzPPwP8N+rO0r1z0BCcCgDImkM0pb16Vyt3MW7s0rWHyYgO55NdEVZGqViaqGZV4u24euaW5lLc
790of9Un0FdEdjUfTAjmQSBVYZBNTJXDcIYvJTbnIHSiKsGxJVAFABQAUAFABQAUAFABQAUAFABQBz
80/h3xZDr2qa3ZABJNNuPKP+0uPvfmGH4V52FxixFSrT/kdvl/w9yIzjJtLp/w5e/tC5vObG3Vou1x
81cMVVh6qACWHucA9ia09tUq/wY6d3ovkt3+CfRm/Ko/Ewxq8fzbrKb/pmFeM/99Zb+VH+1R191+Wq
82/G7/ACD3PMsWd+l0zRlWhuE5eGT7w9/Qj3HH45ranWVT3WrSW6f9arzRLjbXocr8J/8AkW7r/sIX
83H/odeflf8F/4pfmebgf4b9WdpXrnoEN2+y3b34qJ7CexBZ2m3DuOewqYx6smMbF2tSwoAo6hFl0Y
84d+KxmtbkSVy6o2qB6CtVoWLTAY331/E1L3QD6oAoAKACgAoAKACgAoAKACgAoAKACgDyjwp4dng+
85KniiGTJsZAJ3x0k3MGVD7cnP0IPBNfH4XDN5jWpv4d353aaX+fe1tmzmowlSr1J20la34nq9fYHS
86FAFe8slu1Xlo5UOY5U+8h/z26GsalJVLdGtn1RSlY5H4S5Hhm43EFvt9xkjjJ315uV39g7/zP8zz
87sF/Dfqztq9g7xGUNjIzjmi1wFoAKACgBrKG69uaTVwHUwCgBg5kPsKnqA+qAKAI5bhIfvHn0qXJI
88Tdiq+o/3U/E1m59ieciN/KT2H4VPOyedifbpf7w/KjmYczHLqEg67T+FPnY+clTUR/En5VSn3Hzo
89mS7if+LHsapTTKTTJutWMWgAoAKAOO0PU9OTXdVhuLK3spLS6EFvcvDjePLU/wCsI5YknvnBr57D
90VcPDEVIzgouLsnby/m7/ADvqa805J32/roa/ijxdpvhDTftmoTbVbiONOXkPoo/r0r1MVjKWEhz1
91HvsurOapUhRjzTdkeX3Hx81C6Mr6docf2eMZaWeQkKP9rGAPzr5eefVXd06at53f+R5yx7nrTpu3
92duyOa8Q/GXxF4jRLW0xp6twRZbt8h+vUfQYrgr5tisQuW/L6f57/AHHFWzCpVfJQX+fy/q/oem/B
93KBl8Gq0u7zVuJVYN1B3c596+nyeP+zK/dnfl6ao673Z6FXunphQAUAFABQAUAFABQAxORn15qV3A
94dVAUrm95Kx/99VjKfYhy7FInJ5rMyCkAUAFABQA6ONpGwoJppXGlcvQWKpy/zH07VsodzVRsWq0K
95FoAKACgDzt9EXX9VbRpdPe70a1t4mguNQjcvG5dvMO6QbmJAAx06dq+UdH61V+rcjcIpWck7rXXV
966u+1ttuhfIl8aTX366nRXF94WNzHpNxLpfnW+ES0l8vMfTgKenavXlPA3VCfLeOlnbQzcle19Sv4
97j+Hem+KBbx3Mk8NjBylnalY4i394gDJOOP5dTU4jLaWJaTbUV0VkvXYzq0oVlyz1Rd0DwRofhk7t
98O06KGXGPOI3P/wB9HJrfD4DD4bWnDXvu/wARwpQpK0FYyPhP/wAi3df9hC4/9Drnyv8Agv8AxS/M
9948D/AA36s7SvXPQCgAoAKACgAoAKAGv0x3PFJ9gFAwKYEV0kkkeEIHr71Ek3sJmY8Txn5lIrBqxi
10000NpCCgA60ASx20knRT9TxVKLZSiy1Fp4HLnPsK0UO5aii0iKgwoAHtWiVix1MAoAKACgAoA4S98
101ezaV8UYdBuAv2C6t0ETY5WU7sHPcH7v4D3rwJ4+VLMPq8/haX3/8HY5pV+WuqL6q/wAyLx78OrPx
1023dS9NP1eBAY5xys8Z6bh7HI45HHYipx2AhjpyS92a69GvP0enlp3QsTg4YiKb0fcyvAw8X+B71NM
1031izm1HR3bZHc2583yPfj5tvqCOO3cHkwTxuAmqVaDcO61t+tvL7vPLDxxFJ8lT3l0f8Ameq19Yd5
104xfwn/wCRbuv+whcf+h15GV/wX/il+Z5+B/hv1Z2leuegFABQAUAFABQAUAMX5ju/KktdQH0wCgBC
105M0AMaCNuqL+VTyoBBbRD+BaOVBYeqKvRQPoKdkgHUwCgAoAKACgAoAKACgDzn4meEpr/AMQeG9at
106ELPbXkMU+3rsMgIb8Dkf8Cr5rNMLKdaliIdGk/v0Zy1qLqVKc1vF/gdxqkEjRpcQLuubc7kUfxr/
107ABJ+I/UA9q9vEQk0qkPijt5918/zs+h2xfR7MtW86XUEc0Tbo5FDKfUGt4TVSKnHZktWdmSVYji/
108hP8A8i3df9hC4/8AQ68jK/4L/wAUvzPPwP8ADfqztK9c9AKACgAoAKACgBrfMdv50nroAtMBaACg
109AoAKACgAoAKACgAoAKACgAoAKACgAoAKAM2w/wBE1C6s/wCA/wCkRD0DE7h+DZP/AAMVxUf3dWdH
110p8S+e6+/X5mktUpfIZd+JbG112z0cuZL+5DMIk52IATub0HGKc8VThWjQ3lL8PNmPNHm5b6mB8J/
111+Rbuv+whcf8AodcmV/wX/il+Zw4H+G/VnaV656AUAFABQAUANY46dTSbAUDAoSsAtMAoAKACgAoA
112KACgAoAKACgAoAKACgAoAKACgAoA5/xdqY8PWqawV3C2SVWX1UoWA/76RPzrysfV+rKOJ7XX3q/5
113pFppQlfor/ccR8G/D9/eXt94r1bcbm9BWEyDkqTkt7DgAew+leTk+HqTnLGVt3t593/keVg4TfNX
114qby/I6P4T/8AIt3X/YQuP/Q69TK/4L/xS/MrA/w36s7SvXPQCgAoAKAEJx/hSbsBFJMsHLnlvSpb
1155dwbsM+3xep/KlzonmRItzE/Rx+NVzJjumSVQxaACgAoAKACgAoAKACgAoAKACgAoAKACgAoAyfF
116MEdxoV0Jo1liQLIyOMghWDEEenFefj4xlh5cyulZ/c7/AKGlP4rGqqhVAAAA4AHavQStojM4z4T/
117APIt3X/YQuP/AEOvIyv+C/8AFL8zz8D/AA36s7SvXPQCgAoAazY9z6UmwADHJ60WAhvo98Ge681E
1181oTJXRmVgYhQBJHO8R+Vj9KpNopSaL0F6svDfK36VrGd9zRSuWa0KCgAoAKACgAoAKACgAoAKACg
119AoAKACgClrSeZo98vXdBIMf8BNc2KXNQqLyf5Fw0kie0fzbWF+u5FP6VrTfNBPyJejOR+E//ACLd
1201/2ELj/0OvMyv+C/8UvzPOwP8N+rO0r1z0AoAbuzwv5+lK/YBQuP8aErALTAQjIxQBk3EPkyle3a
121uZqzMZKxHUkhQAUAXLS8x8jn6E1rGVtGaxl0ZfrYsKACgAoAKACgAoAKACgAoAKACgBgmjL7A6lh
122/CDzU88W7XHZlXWn8vR75s42wSHP/ATWGKfLQqPyf5FQ1kie0j8q1hTptRR+la01ywS8iXqzkfhP
123/wAi3df9hC4/9DrzMs/gv/FL8zzsD/DfqzsTIB05r1eZHoABv6nj0FG+4DulUAtABQAUAQ3MAnTH
1248Q6GplG4mrmW6FGKkYIrn2MWrCUhBQAUAX7K53jY3UdD61tCXQ1i7lytSwoAKACgAoAKACgAoAKA
125CgAoA4/xn8M9N8XSfagz6fqYGBdwcFh6MO/16142Nyuji3zr3Z9/8zCrRjV6tPutynpHh7XvD2iX
126djqmsJq1rNsghLIfNUs4XGSeRg9DnHrXJHD4nD0JUq1Tmi7Jb31aX3am2GhOm/flzW8rHeV9IM4f
1274Wxeb4YugGKn7fcdP9+vGy1c1B/4pfmefgv4T9WdDNA8R+YH616DTR1NMYCVPBI+lSK5PFeyRnk7
128h71ak0UpF2G5SfpwfQ1spJmidyaqGFABQBDcWyzr6MOhqJRuJq5myxNC2GFYNWMWrDKQgoAVWKMC
129OopjWhrQSiaMN+Yroi7o2TuSVQwoAKACgAoAKACgAoAKACgAoAzdS/f6jp1t/ttcMP8AZQY/9CZf
130yrir+/Vp0/Nv5Jf5tGkdItmlXaZnE/CpxH4ZumY4A1C4/wDQ68fLHag/8T/M8/Bfwn6s7JZo5OAy
131n2r1uZM9Aa1rE/VB+HFLlTFZDPsEXofzo5ELlQ5bOJTkA5+tHIh2SJqsYtABQAUANdFkXDAEe9Jq
1324FKbTyOYzn2NZOHYhx7FR0ZDhgQfes9jNqwlIRZsZtku09G/nWkHZmkX0NKtzQKACgAoAKACgAoA
133KACgAoAQkKMkgAdzRsBm6d/pt7c33BjP7iEjoUX7zfi2fwUVw0P3tSVbpsvRbv5v8EjSXupRNOu4
134zOE+GYz4SvP+whcf+h14uXf7vL/E/wAzzsH/AAn6v8zoK7zpJI7mSLo3HoapNopSaLsF8snDfK36
135Vqp33NFJMs1oULQAUAFABQAUAFADWUOMEAj3oauBBJYRv0yp9qzcETyogbT3U5VgcfhUcjJ5bbF5
136CSoyMHuK2WxoOpgFABQAUAFABQAUAFABQB5r4l8Ia54t1uCPVNTW2093Jj0+xLcRj7zuxxk9B0PL
137DpXyuLwmKxlWMK07J7RXZbt7frq1sZOi6kuaUvdXRaX9Wei2trFY2sVvBGsUESBEReiqBgAV9PCE
138aUVCCslojUlqwOH+Fy7/AArej1vrn/0OvGy3WhL/ABS/M8/Bfwn6s3a7joCgAoAs2t4YjtblP5Vp
139GVjSMu5oghhkcg1uaC0AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQBm6Z/pV3eXh/ifyI/
140ZEJB/Nt34Y9K4qH7yc6z72Xov+Df8DSWiUTSrtMwoA4r4T/8i3df9f8Acf8AodeRln8F/wCKX5nn
1414H+G/Vm9cR+VMy+/FdzVmdUlZkdSSFABQBasrny22N909PatIytoaRfQ0a3NAoAKACgAoAKACgAo
142AKACgAoAKACgAoAKACgAoAQnAoAzvDo/4kdk3eSISn6t8x/nXFgv92g+6v8AfqaVPjZpV2mYUAcX
1438J/+Rbuv+whcf+h15GV/wX/il+Z5+B/hv1Z1F/DuXzB1HX6V6U11O2SKFYmQUAFABQBpWU/mx4P3
144lreDvobRd0Wa0KCgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAIbttlrM3ojH9KzqO0G/Ia3INGXZ
145o9ivpBGP/HRWWFVqFNeS/IqfxMi0nX7TWrrUYLZi7WM/2eU9t20E4/PH1BpUcTCvKcYfZdn/AF+B
146mmnsaVdQzi/hP/yLd1/2ELj/ANDryMr/AIL/AMUvzPPwP8N+rOzI3DB6GvXPQMq5gMEmP4T0NczV
147mYyViKpJCgAoAkt5fJlB7dDVJ2ZUXZmtXSbC0AFABQAUAFABQAUAFABQAUAFABQAUAFABQA1lDqV
148YBlIwQehFJpNWYEF7L9h06eSNQPJiZlUcDgcCsqj9lSk49F+Q+p5d+z550+na3dykt51wvzn+JsE
149sf8Ax4V8zkCk41JPrb79b/meXl7lKnKcusn+h3/i3xdp/g3SzeX7nk7Y4U+/K3oB/M9q9/F4ung4
150c9T5Lqzuq1YUY883ocx8H7iS/wDCxkXMaS3U0pA7ZbOM152VSdShfu2/xOHAPmpXXdnoPSvePTGT
151QiZNp/A+lS1cTVzLliaF9rVztWMWrDKQgoAKANS0k8yAeo4rog7o3TuierGFABQAUAFABQAUAFAB
152QAUAFABQAUAFABQB5z8M/iuni1/7O1FUttWUfKV4WYDrgdiPT8q+dy3NPrT9lV0l08/+CefhcWsR
1537slaS6HoF2kslu6wtGsh4BlUsvvkAjt7171RSlFqFr+eq/NHoqyepznhfSv+EWsZNO0/7NdwW0p8
1546OIFJVZsN3JBOCOOOMV5OEpSwcHSp2kovW2ju9eraeluw4wpxXLFWOO8R/DjVPiN4pfULu9jtdGT
155EduqHfJsHX5eiknOc8joRxXl1sBXzGu60pJQ6dXb06fPY8zE4N4ir+8laK6HQ/B63W08JywpnZHe
156zoueuA2K9XKYqGHcV0b/ADDAK1Jpd2dzXsnohQBFPAs64PXsfSpcbiauZk0LQthh9D61g1YyasMq
157SQoAuac+HZfXmtYPU0gX62NAoAKACgAoAKACgAoAKACgAoAKACgAoAKAMK68D6HeatFqb6fGl/E4
158kWeIlGLA5ydpGfxrz54DDTqKq4+8ne60/Ihwg5c7Sv3M7xJ8RbPQL5bD7Jey3bnCsLVzH7kHHzY/
1592c/UVyYvNIYefslFuXo7f8H5FOUYtKV/kmzN0e9tfA+q61d69qlvB/atws9ujBlYrtHJQ5K8nHP9
1602ubD1I4GpVnippc7TW+3pq1vbXsZtxpNylKyb6+iRsw66HTVLnQ401lTHHcRxQTKFZ23Kw3dBwgO
161PUn1rqhiburLCrn0Tsn1d0/yvb/M6JO8FJa7mJ8JLuc+FXZoCrveTs6c/KxbkVGVzl9Xu11f5nlY
162Fv2T06s76KQyDlCn1r207npElUAUANeNZFwwyKTVwM+4smiyV+Zf1FYyjYycexWrMgltW2XCfXFV
163HRlR3Nauk2CgAoAKACgAoAKACgAoAKACgAoAKACgAoA848AeGPGdjeLca5rb/Zh1sywmZ/qx+7+F
164fN4DC4+E1OvUaXa97/5fI48PCvHWtO/lb9Tur+2kM0F1AoeaDcPLJxvRsbgD2PAI+mOM5HtVoSco
1651Ybx6d09/ns16W03XfFrVM4vwSJptAeDWdNn1C8F5OyJcW2QoLn+Nht65714OAk5UHCvTcpczteP
166n3em9+pMISS99rd/m7fgbV94h0zwS0H9qyraPfMcPGhMSbQAEyBwAD1wM8njOK9B16WAa9vo59lo
167rW0+X46vS9iatWELczsttSh8I3WXwxcOhDK1/cEMOhG+jK2nQbX8z/M4MD/Dfqztq9g9AKACgAoA
168KAK89mkvI+VvUVm4JkuKZRkgeBskcDuKyaaIs0aoORXSai0AFABQAUAFABQAUAFABQAUAFABQAUA
169FAHK/ETxvB4J0Rpid17NlLaIdS3dvoP8B3rycyxqwdH3fie3+fyMa1eGHjzz+7uZPwl1rW/FFrf6
170vq0pMErrHbRKoVFC53ED6kDPtXJlNXEYnnrVno9F203McLVqVoe0mrX29C94l8fDw/400PRmRTDe
171g+a56qWO2PH4g5+tb4rMPq+Lp0Oj3+eiNZ1lCpCm/tXNHx14Qh8aeH5bCRhHMD5kEpH3HHTPt2P1
172rqx2EWMouns90/MK1KNem6cupzXwZL2HhJLeXAKXMqMB2IbFcGUXhh+V92cWX+7S5X3Z6LXvnqC0
173AFABQAUAFACEZFAABgUALQAUAFABQAUAFABQAUAFABQAUAFABQAUAePz+Bb/AOJ3i+61TVWey0a3
174kNvBCeJXRT2H8OTkknnnpXxywdTNMRKtV92Cdl3svyPOrYSVerzVfhWy7+fz/I9ZsrKDTrSK1tol
175gt4VCJGgwFA7V9dTpxpRUIKyR6CVlZHkfxU0ia6+JvhVkB2ztGgI7FJMt+hr5DNaUpY6lbrb8Ged
176iYOWIoyXd/hqex19kekcR8K4ll8NXQYZ/wCJhcf+h14+WJOg/wDFL8zz8F/CfqztVXaoGc47mvXW
177h6A6mAmecUALQAUAJQAtABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAGb4f/wCQWhP3jJKW/wB7
178zGz+ua4sH/BXq/vu7mlT4jSrtMypdaXbXt5Z3U0Yae0Zmhb+6WXaf0rGdGFScaklrHb56AW62A4v
1794T/8i3df9hC4/wDQ68jK/wCC/wDFL8zz8D/DfqztK9c9AKAKd45hmjkH0NZS0dyZOxaRg6hh0NaJ
1803KBmCKSegobsBWs5DNLI59gKzg7tslO5brUoKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAzdNP2
181a9vrQ9n+0R+6vkn/AMeDfmPWuKh7lSdLzuvR/wDBuaS1SkaVdpmFABQBxfwn/wCRbuv+whcf+h15
182GV/wX/il+Z5+B/hv1Z2IlQnG4Z9M1610egOpgR3EPnx7e/UVMldCauMswyxbWGCDilDYFsF8SLc4
1837kUT2CWwtnD5UPPU8miCsgSsierGFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAUNTjeJoryFS8k
184GdyKMl4z94AdzwCPcY71yV4uLVaCu4/iuv8AmvS3U0i7+6y5FKk8SSRsHjcBlZTkEHoa6YyU0pRd
1850zNq2jH1QBQBxfwn/wCRbuv+whcf+h15GV/wX/il+Z5+B/hv1Z1txarPz0b1r1JRud7VyCNLi3bg
186b19M1CUokpNF3Py5x+FaljRIpUEEYPSi6AXKv6GjRgKTgUwKkl/822Ndx9TWTn2J5uxYh37cyYye
187w7Vcb9SiSqAKACgAoAKACgAoAKACgAoAKACgAoAKACgDPeCXTpGltk823YlpLYdQTyWTtz3Xv1GD
188nPG4Tovmpq8eq/Vfquu6s730upaMs2t5Fexb4X3AHBBBBU+hB5B9jXRTqRqrmg/6810IacdyetBH
189F/Cf/kW7r/sIXH/odeRlf8F/4pfmefgf4b9WdpXrnoBQAlAFe3jaHfjlTyPr6VlFNBawLBI775G5
190HRR0o5W9WJEroJ48HIB9Ku3MhtBFbpD91efWhRSFaxJVDCgAoAKACgAoAKACgAoAKACgAoAKACgA
191oAKACgCnd6alxL50bNb3QGBPF1I9GHRh7H8MVzVKCm+eLtLuv17r1+RalbToQ/2jNY8X8WEH/LzA
192CYz7kclP1HvWft50tK607rb5rdfivMfKpfCc58JWD+Gbkggg39wQR3+euTK3eg2v5n+Z5eC/hv1Z
1932tewegRSzqh27vm7AVDlYBXZyn7vGT69qbba0AZDb7Ad7FmbqaSjbcENt2aMOj87eh9RSi7aMSJH
194kFvGC2T9Kd+VDbI1v4ie4+opc6J5kTq4cZUgj2q07lDqYBQAUAFABQAUAFABQAUAFABQAUAFABQA
195UAFABQAUAcV8Jhjw1c/9f9x/6HXkZX/Bf+KX5nn4L+G/VnX3DOF2xglj39K9STeyO9kdvaeW29zu
196f+VKMbasSVidyEBbOMcmqehQBmYZAU575ouwELBXAZhuPQUddQHkZGDVAV3sY2PGV+lZuCJcUwis
197/JbKyMKFC3UaVizWgwoAKACgAoAKACgAoAKACgAoAKACgAoAKAIJL6CK7itXlVbiZWaOMnlwuM4+
198mRWbqQjNU29Xt8gJ60AKAOL+E/8AyLd1/wBhC4/9DryMr/gv/FL8zz8D/DfqztK9c9AQnAoApXzk
199Io7tyaxmTN6Fm1/490+laR2GtiO9hMseR95amauKSuOtJvOi5+8ODTg7oad0T1YwoAKACgAoAKAC
200gAoAKACgAoAKACgAoAKACgAoA4f4s+HLvW/D8d3pvmDU9Ok+0QmIkOR/EFx36H8K8PNsNOtRVSl8
201UHdW387fn8jlxNOU6f7v4lqix8MPGreM/D/mXGBqFs3lXAAxuOOGx2z/ADBrTLMa8ZR974o7/o/m
202GGre3p8z32fqdLdXbiUW9uA9wRklvuxL/eb+g6n2GSPQqVHf2dP4vwXm/wBF18ldrsS6vY5T4SDb
2034ZuASWIv7j5j1Pz15+Vq1B/4n+Z5uC/hv1Z21ewegMb5mA/E1L10AqXyGSaNR34rOauyJK9i4q7F
204AHbitUrFjqYDFjCMxHG7rSSs7gPpgFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAHlvw18dtq3
205jPxDps8m5Jrh57XJ7KdpUf8AAQp/A18rlmNdTE1acnpJtr+vT8jho4n2tWpTfR6em39ep20WlWWl
206apdPpdrHFqF4Fa4dc7FAJw7LnGTk4xgt+BI9j2VOjVl7CNpy37Jd2v6b+Ta9CMEry/pmraWiWcWx
207SzEnc7vyzt3JPr/+oYArtp01TVl9/Vvu/wCvJaCbucl8J/8AkW7r/sIXH/odeblf8F/4pfmedgf4
208b9WdmTtGfSvX2PQEQYGT1PNJABUFg2ORRbqA6mAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUA
209FABQA2TPltjrg0pbMEfJvhnVptF8YWd7G2JEucEvnGCcHP4E1+VYerKjVjUjumfKUJ+zxt31bX3s
210+rLO0WziKgl3Y75JG+87ep/QewAA4Ar9QpU1SjbdvVvu+/8AWy0Wh9a3csVsScX8J/8AkW7r/sIX
211H/odeRlf8F/4pfmefgf4b9Wdi3zMB6cmvVersegPqgCgAoAKACgAoAKACgAoAKACgAoAKACgAoAK
212ACgAoAKACgAoAgvLtLK3aV8kDACr1Yk4Cj3J4rKpUVKLlL+vL5jS5nY+V/FuhXGheMrmzljCO04k
213RVORtc5AB79cfhX5hiaM6FWVOa1/zPlcTS9njbLZtNfNn1bGCI1B6gCv1NbI+pY6mBxXwnOPDV1/
2141/3H/odeRln8CX+KX5nn4H+G/VnZoOMnqea9ZHoDqYBQAUAFABQAUAFABQAUAFABQAUAFABQAUAF
215ABQAUAFABQAUAZbSpc6i80rqlrZHYCxwDKRyfwBAHuzelcHMqlVyk/dhp/28/wDJaLzb7Gnwxt3/
216ACM/xN4EsPE+q6XqE+UubGVX3AZ8xAc7D7Z5z9fWs8VgKeKqQqy0cX967HNOlCpKMpLWOx0lemah
217QBxPwpGfDlyO39oXGf8AvuvHyzWi1/el+ZwYH+G/VnbV7B3hQAUAFABQAUAFABQAUAFABQAUAFAB
218QAUAFABQAUAFABQAUAFAHiX/AAkVx4y+IGl6BZTM+k2Fx500g4+0Oh3tI3sW6D3r4ZVpYvFU8NB3
219hF39Wndt+r2POliHXxfs4fDHf5dPkz22vuT0RCQoyTgepobsAUAcZ8J/+Rbuv+whcf8AodeRlf8A
220Bf8Ail+Z5+B/hv1Z2leuegFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAcB8Kf
221hwfBllJd3uG1W5UBwDkRJ12g9z3J/wAOfAyvLvqkfaVPjf4Lt/mcOEw31eLvrJ7nf1753EN3aQ31
222tLb3EaywyqVeNxkMD2qJwjUi4TV0wPMn8K+LvA2q+d4euW1jR2bJ0+5lG5R/dG79CD9RXy7wmNwF
223Tmwr54dm/wCvvRw+zr053py5o9nv8mbnwiYv4XnYqUJvrglT1Hz9K9PKneg3/ef5k4L+G/Vnb17B
2246AUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQBz8vi+zu7FrjR7i31YxyIjxW8q
225knccKM5wCTjr715c8fBw58O1OzSaXnovxKhaezv6HDXfxA8etfNHb+EjEgPCPG78f7wIFeNLMMxc
2267Ro2+Tf4nmyrYnmtGlp6o77wvf61qFkX1rTIdNm4wkc/mZ+oxx+Zr3sJUxNSN8RBRfr+nT7zui24
2273krP7zbrvKOL+E//ACLd1/2ELj/0OvIyv+C/8UvzPPwP8N+rO0r1z0AoAKACgAoAKACgAoAKACgA
228oAKACgAoAKACgAoAKACgAoAKACgDAgbT5riztLMQW1orGZEQBBMy9Ai8ZAJBLdOAOeceTF0ak4U6
229VlFa9rtdu6W7fpa+ttbci8zfr1jIKACgDi/hP/yLd1/2ELj/ANDryMr/AIL/AMUvzPPwP8N+rO0r
2301z0AoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDzb44aFc33h+21SzLi402QyE
231xnDBD1YH2IB/Ovm87oSnSjWhvD8n1+RwY2E5UuanvHUufCTx4/jDR3gvGB1Kzwsjf89FPR/r2P8A
2329etspxzxVNwqfFH8V3/zHg8R9Yp3e63O9r3juCgDi/hP/wAi3df9hC4/9DryMr/gv/FL8zz8D/Df
233qztK9c9AKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAbJGsqMjqHRgQysMgj0N
234JpSVmB5tpHw8n8E/EGHUNKDPot4HimiHJt8jI+q7gMHqOh9T8zSy+eCxsalHWDun5f8AAvbX7+74
235qWGVGs5w2a1Xmel19OdoUAcX8J/+Rbuv+whcf+h15GV/wX/il+Z5+B/hv1Z2leuegFABQAUAFABQ
236AUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAHF/Cf/kW7r/sIXH/odeRlf8F/4pfm
237efgf4b9WdmTgV656AUALQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAMeVI3RWdVZ
238zhFJwWOM4HrwCfwqXJJpN7gPqgCgAoA4v4T/APIt3X/YQuP/AEOvIyv+C/8AFL8zz8D/AA36s6e/
239nx+7H416M30O2T6FwdBWyLFoAhln8uWNO7Hn6VDlZ2FcmqxhQAUAFABQAUAFABQAUAFABQAUAFAB
240QAUAFABQAUAeafHW+udL0PSLy0dop4L9XWRf4SEevmc8lKFOnOLs1L9GcGOqSpUlOG6a/U6/wZ4m
241i8XeHbXUo8K7jbLGP4JB94f1+hFexgsSsXQVXr19TqpVFVgpx6m5XcahQBxPwpbZ4Zuz6X9z/wCh
24214+WO1CX+KX5nn4H+G/Vm7kyyZPVjXdudW7Niuo2CgDLeTzLnd/tcVzN3dzK/vGrXSahQAUAFABQ
243AUAFABQAUAFABQAUAFABQAUAFABQAUAcb8WfD7+IfBN5HCpe4tyLiNR1JXqP++S1eNm1B18K+XeO
244v+f4HNiaXtqMoLc4b9nfVH83V9OJJTalwo9D91v/AGX8q8XIKr550ujV/wBP8jzcrm3CUH0f5/8A
245DHtdfZnthQBw3wx/5FO9/wCv+4/9Drxsu/3eX+J/medgv4T9WdNYxb5s9l5r0Yq7OyKNOug1Gv8A
246cb6UnsBlW6750HvXOldmMdzXrpNgoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAEoA5nQfAN
247h4b8Sahq1lmIXkYU2wHyoc5Yj2PHHbn6V5eHy+nhsRKtT2a27d/+GMYUYU5SnFay3Onr1DYKAOJ+
248FK7/AAzdqe9/cj/x+vHyxXoS/wAUvzPPwX8N+rOyhiEKbR+frXrpWPQSsPzzTAKAK9ta+S7MfoPp
249WcY2YkrE7MEUknAFW3YYkUnmoGAwDQndXAfTAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACg
250AoAQkKCScAdzRsBxXwkYP4ZuWUgqb+4II7jfXj5W06Da/mf5nn4L+G/VnbV7B6BTaYpf47HC1le0
251ib62LlalCE4GTQBmXE5uJMD7vQCueT5jJu7saMaeXGq+grdKyNR9MAoAKACgAoAKACgAoAKACgAo
252AKACgAoAKACgAoAKAKupmMafcCWZrdGQp5sZIZSeBtxznJ4x3xWFdxVOXM7Lv117efbzHFNvQ8Xs
253PitqGiau2keLYZLmG3fYzooVz6M69HGOcDHXvxXxdPMqtOfscam0t+/z7+n56HlLHvD1XSrL5rt/
254XY7v4QzJceFZpYzuR76dlPqC+RX0eVNSoNr+Z/maYF3pP1Z29ewegZt4uy6z64Nc8tzOW5oiug0K
2559/Jshx/eOKzm9CZOyK9jBvfefujp7mogr6kxXU0a3NAoAKACgAoAKACgAoAKACgAoAKACgAoAKAC
256gAoAKAI5547aF5ZWCRoMkmonONOLlJ6IaV3ZFS1t3upVu7pdrDPkwH/lkDxk/wC2R1PYHA7luenC
257VSXtai9F2/4L69tl1bpu3uo8++Mvw6fxDbDWNOi36hbriWJBzMg9PVh+o+grxM3y91l7ekveW67r
258/NfkeTjsL9YjzR+Jfj5D/gpcGDwXB/d86TI/GtcnlbDL1ZGXvlor1Z6YrBlBHQ19DuesRTwLNtJ4
259KnrUyjcVrkm9f7w/OndDsMmgE+3J4HYd6TjzCauSKoUYAwB2qthjZJViXLHFJtINiq+ojPyoT9az
260dQjmRYgeSRcuoUdh3q4tvcpEtUMKACgAoAKACgAoAKACgAoAKACgAoAKACgDNh/4mt15x/49IHIi
261XtI44L/Qcge+T6GuKP8AtE+f7MdvN9/RbLz17Gj9xW6s0q7TMKAOD+F9os3hu5IO0i/uAPT75rxc
262tjei/wDE/wAzzcEr036s7W3RoY9jYJ7Yr1leOh6KViXZ68n3q7dxkV3J5UOR16VMnZCbsPUZUMvG
263RnFNd0MeDkVSdwKcllJM+5nH4dqycG9yXG5LDZpFz95vU1SgkNJIsVYwoAKACgAoAKACgAoAKACg
264AoAKACgAoAKAM/VpXKRWsTFZrltgZeqJ1ZvwHA9yK5MTJ2VKD1lp6Lq/u/Fo0gur6F2KJIIkjjUJ
265GgCqq9AB0FdMYqCUYqyRm3fVjbi6htULzSpCg/ikYKP1pSnGCvJ2CxmnxdoYk2HWLHd6faE/xrl+
266u4W9vaR+9CutrmB8JGD+GbllIZTf3BBHQjfXJlbvQbX8z/M4MD/Dfqzs1PVia9Zdz0BjXcSn74/C
267lzoV0MuQLmD92d2D2pS95aA9UTouxFHoMVa0QxF4dvwNJbgPqgCgAoAKACgAoAKACgAoAKACgAoA
268KACgAoAKACgDNtf9K1q7m/htlFunsSA7n8coP+A1xU/3mInP+X3V+b/T7jR6RS76mlXaZmH4o8Ga
269T4vtxHqVsJGUYSZPlkT6H+h4rgxWBoYxfvVr36ozqU41Y8s1dHlurfs8TrITpmqxvH2S6Qgj8Vzn
2708hXzVXIaif7qaa89PyuePPKoP4JW9dTq/g1YyW3hERmQKYbqaNtvchsV62UwccPbs2dOXx5aVvNn
271oCDKfnXuLY9Nkb2kbZ+QZpOCFZCCVIXjjVQA36Uk0rJBtoNlsvMYt5jfjScL9RNXH28HlZO5jn1p
272xjbUq1h08bSJhWKmqkrgzOdZoTzuHvmsHdGT5kSRX7p975x+tUptDUu5eimWZcqfwrZNMtO5JTGF
273ABQAUAFABQAUAFABQAUAFABQAUAZvh/59NE3e4kkmz6hmJH6YH4VxYPWlz/zNv73p+FjSp8VuxoS
274P5aMxBIUE4UZP5V2N2VzM4m5+M3ha0uWglup0kQlWDWsgKkdiCM14jzrCJ2bf3M5Z4qhTlyylZ/P
275/I2tC8c6F4kcR6fqUM0x58kkq/8A3ycGu2hj8NiXanPXts/xNoVYVPgkmZPwn/5Fu6/7CFx/6HXP
276lf8ABf8Ail+Zx4H+G/VnZ1656AtAFSeItdREd+9ZSXvCa1RZ2+pJrS3cYpOBk8CmAA5FABQA0xIf
2774V/KlZAKqKnRQPoKEkgHUwCgAoAKACgAoAKACgAoAKACgAoAKAKWiJ5WjWCf3beMf+OiuXCrlw9N
278eS/IuesmXa6iDnvEvgLRPFgzqFkrTDpPGdkg/EdfxzXnYnL8Pitakde60f8AXqZVKNOsrVFc5GL4
279A6JDdLMmoaiu1gwCugIPsdua8pZDRTvzy/D/ACOOOX0IS5o3+82PhIoi8LzrknF/cDLHJPz967sr
28092g1/ef5jwP8N+rO26V7B6BGk6SOVU5x3qVJN2C5JVAAYEkdx1ouAjLuUj1GKTVwM2OZ7WQqegPI
281NYJuLMr8rsaSMHUMOhrdO5qOpgFABQAUAFABQAUAFABQAUAFABQAUAFABQBS0R/N0awf+9bxn/x0
282Vy4V82HpvyX5Fz0ky7XUQFABQBxPwpGfDN2P+n+4/wDQ68fLdaEv8UvzPPwP8N+rOmvLrf8AIvA7
28316MpX2O2T6EthFsjLn+Lp9KqC6jirItVqUZ9rKTdn/azWEX7xCepo1uWVru184bl++P1rOUb6ktX
284I7CQgtG3BHODSg+go9i7WpYUAFABQAUAFABQAUAFABQAUAFABQAUAFAGb4f+TThB3t5Hhx6BWIH6
285YP41xYPSlyfytr7np+FjSp8V+5pV2mYUAFAHDfC+TyvCt43f7fcY/wC+68bLXahL/FL8zzsE7Un6
286s6e1tTK25+FHb1r0Yxudqj1ZogYFdBoBoAzbVf8ASwPQmueO5nFamnXQaBQAwxqXDY+Yd6VtbgPp
287gFABQAUAFABQAUAFABQAUAFABQAUAFABQBm23+i61dw/w3Ki4T3IAR/ywh/4FXFT/d4icP5veXy0
288f6feaPWKfbQ0q7TMKACgDifhSgfw3c5Gcahcdf8Afrx8sV6L/wAUvzPPwX8N+rO06P8AUV62zPQH
289VQBQBBFBsuJH9elQo2dxW6k9WMKACgAoAKACgBCdoyego2AAdwBHQ0bgLQAUAFABQAUAFABQAUAF
290ABQB5pBoXirwlrkHkyya9oaSFk82QG4hQ8MvP3uOw9AeOlfKPD43BVYuF6kE++qXVa+Xy0vpsZUl
291UhNxbvF991/mvxPSIpUniSSNg8bgMrL0IPQ19TGSmlKLumbNW0Y+qEFAHF/Cf/kW7r/sIXH/AKHX
292kZX/AAX/AIpfmefgf4b9Wdk/3c+nNesz0BaYC0AFABQAUAFABQBXluDBMA3+rbv6Vm5crE3YnByM
293itBle+fbBj+8cVnN6Ey0RJbHMCfSqjsUiWqAKACgAoAKACgAoAKACgAoAKAM2H/iVXfkni0uGJiP
294aNzyU+h5I98j0FcUf9nnyfZlt5Pt89153XY0fvq/VGlXaZhQBxfwn/5Fu6/7CFx/6HXkZX/Bf+KX
2955nn4H+G/VnaV656AxOMr6dPpUrTQY+qEFABQAUAFABQBFPCJ02nr2PpUyVxNXG2qPGhR+x4PtSim
296tGC0FuoTPHgdQaJK6Bq5Iq7FAHQVaVhkFxeCI7V+Z/5VnKdtiXKxJAH2ZkPzHt6VUb9SkS1QBQAU
297AFABQAUAFABQAUARXNsl3bvDICUcYODgj3B7H3rOpCNSLhLZjTs7or6dcyMZLa4IN1Bjc2MeYp+6
2984+uDn0INY0Zyd6dT4o/iuj+f53Kkuq2LtdRBxfwn/wCRbuv+whcf+h15GV/wX/il+Z5+B/hv1Z2l
299euegNYdx1FJgRzljFujOCOamW10DIIdQzxIMe4qVPuQpdy2rBxkHI9RWt7ljqACgAoATPNAATgZo
300egENtMZIskE8nms4y0BakpOV+UjPY1e60AghsxG25jvb1qIwtuSlYs1oUFABQAUAFABQAUAFABQA
301UAFAFHUbeQ+Xc24zcwZwv/PRT95PxwMe4FcteEtKlP4o/iuq+fTzsXF9HsWba4ju4EmiO6NxkGt4
302TjUipx2ZLVnZnIfCf/kW7r/sIXH/AKHXl5X/AAX/AIpfmedgf4b9WdpXrnoBQA0jByPxHrSsBm3U
303HlvuX7h/T2rCSsZSVhsFw0DccjuKSdhJ2NSNxIgYdDXQnc2Bs7flxn3od+gFVkumP3gv0rO0mTqT
304xqyH5m3Njr0qldPUroMZ5i4/dDAPrSbk+gailSQUicIV6jFFuiAWFXQsGYN36U4prcBHvIozgtk+
3051DmkK6Q6O5jkOAwz6GmpJgnclqhhQAUAFABQAUAFABQAlAFK41zTrN9k9/awt/dkmVT+prnliaMH
306aU0vmg2C21vTrxtsF/bTN6RzKx/Q0QxNGekZp/NBuR/8gy/9LS6b8I5T/Rv/AEL/AHqy/gVf7svw
307l/wfz9TT4l5r8jnfhP8A8i3df9hC4/8AQ65cr/gv/FL8zy8D/DfqztK9c9AKACgBkkYcHjr1HrUt
308XAoS2TLkp8y+ncVi49jNx7D7ByjmNgRn19aqDs7DjpoX62LCgCJ5V8xUB+f2qG1ewXH7x34Poaq/
309cCGJdk0rdd2MYqFo2FiZRjr1NWkA14UkPzKD70nFMLAsEadEA/ChRSAkqgCgAoAKACgAoAKACgD5
310N1vx5r3iFm+26nOyH/llG2xP++RgV+W1sXXxH8Wbf5fdsfHVMdXqfat6aGCeTnvXHaxwtt7gpKsC
311CQR0I7UDUnHVM6LR/iBrmixNBHfST2rDBt7hi6/h3U+hBFdlPF1qcXCMnZ9On/A+Vj0aGY16LTvf
3121PcPgrctd+DPOf78l1M5x0yWzX2+TycsNd73Z7mAfNRv5s76vbPRCgAoAKAGsMHI/EUn3AUc80wF
313oAr3k/kx8febpUTdiW7EVjARmRup6ZqYLqEVbVlmd/LiZvT1q5OyK2FicSRqw7007oNyveB4mEqE
314gdxWcrrVEyutUS21wJ19GHUVUZXGncmqxhQAUAFABQAUAFABQAUAfF9fkR+fhQAUAdN4H8A6h431
315ARwKYbND++u2HyoPQere38q78HgquMnyw26vov8Ag+R6GFwcsQ7vSPf/ACPcfg7braeEpIEzsivZ
3160XPXAbFfa5THkw7iujf5nv4BWpNLuzua9k9EKACgAoAKAGD5Wx2PSltoMfTEQvCpfzG+YjoDUNdQ
317sSqNqgVSVgI7ld8Dj2pSV0J6iWq7bdPpRHYFsSkZFUMgFr5UoeM49VrPls7oVrFitBhQAUAFABQA
318UAFABQAUAfP91+z7rsZ/cXtjMP8AaZ0/9lNfByyPFL4XF/N/5Hzzyl/Zn+A22/Z+1+Rv313YQj1D
319u3/sopRyPFPdpfN/5CWUy6zX3HW+H/gDpdi6y6pdyaiw58pB5ceffnJ/MV6lDIqcda8ubyWi/wA/
320yO6ll1GnrL3n5/5Hp1lY2+m2sdvawx28EYwscahVH4V9LTpwpRUIKyR6m2hyXwn/AORbuv8AsIXH
321/odeZlf8F/4pfmefgf4b9WdpXrnoBQAUAFABQA1hkUmrgKp3DNCdwEblgPxpPsMdVCEoAOlAC0AF
322ABQAUAFABQAUAFABQAUAFABQAUAFABQBxfwn/wCRbuv+whcf+h15GV/wX/il+Z5+B/hv1Z2leueg
323FABQAUAFABQAwfK/1qdmAq8sT+FNdwHUwCgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA4v4
324T/8AIt3X/YQuP/Q68jK/4L/xS/M8/A/w36s7SvXPQCgAoAjlnSEfMfwqXJIG7DLe6FwzADGPWlGX
325MJO5PVjGuPlyOo5pPYECjCihbAOpgFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQBxfwn/5F
326u6/7CFx/6HXkZX/Bf+KX5nn4H+G/VnZswUZJAHvXrt2PQK0l+i/dBY/pWbmuhLkkLNdGKFTgb2HT
3270ocrIbdjOZi7ZJyT3rExbuXdOXCu3rxWtM0jsXa1LCgBkf3cenFJAPpgFABQAUAFABQAUAFABQAU
328AFABQAUAFABQAUAFAFHV9asdBs2utQuo7WBf4pD19gOpPsKwrV6eHjz1ZWQpSUVeTsji/hVqIfwr
329JJDykt5PIrEdi/FeTllS9BtdW/zPNwUv3Tt3Z1LyNIcsSfrXp3udjdwiXc4B6d/pQNK7FlkMshY9
3306G7ibuNRDIwVRkmjcErmtDEIYwo7V0pWRvsSUwCgBi8O350luwH0wCgAoAKACgAoAKACgAoAKACg
331AoAKACgAoAKAPP8A4gfFux8I+ZZ2gW+1UcGMH5Ij/tn19h+leBj82hhb06fvT/Bev+Rw4nGQwytv
332Lt/meA6/4k1HxPem61K6e4k7A8Kg9FHQCvh61epiJc9WV2fLV8RUxDvN/Loe2fBz/kSIP+u0n86+
3330yn/AHVerPewH8BfM7evYPRJFG2It/e+UUy1ohIoWmbCjPvQlcSVzSt7YQL6sepreMbGqViarGFA
334BQAwf6w/QVPUB9UAUAFABQAUAFABQAUAFABQAUAFABQAUAFAHkfxW+LR0xpdG0SX/Sxlbi7Q/wCq
3359VX/AGvU9vr0+TzTNeS9DDvXq+3kvPz6eu3kY3G+x/d0/i/L/gnhjMXYsxLMTkk8kmvjj5dtyd2J
336QI9++Dn/ACJEH/XaT+dfdZT/ALqvVn0+A/gL5ncAFiAOpr2T0tzSFmpVA2SFHT3rbkNrEyqEGAAB
3377VaVhjqYBQAUAFADP+Wn4UuoD6YBQAUAFABQAUAFABQAUAFABQAUAFABQB518X/iEfCumjT7GTbq
338l0p+ZesKdN31PQfia+dzbHvDx9jTfvP8F/m+h5+NxP1eGnxPb/M+dCSxJJJJ6k18IfINtu7CgQUA
339fQHwgTZ4It/eRz+tfd5UrYVerPqMB/AR6BYQbm8w9B0+te3BX1PUiupoVuaBQAUAFABQAUAMH+sP
3400FT1AfVAFABQAUAFABQAUAFABQAUAFABQAUAFAHyB4i1248S61d6jck+ZO5bbnhV7KPYDivyitVl
341XqSqz3Z8RiKzr1HN/wBIzqxOYKACgD6J+EcBfwdZKO5Y199la/2aKPq8Ar0UeiogjQKOgr3krHqj
342qYBQAUAFABQAUAMX77fgKlbsB9UAUAFABQAUAFABQAUAFABQAUAFABQAUAfF9fkR+fhQAUAWNO06
34341a+hs7SJpriZtqRr1Jq4QlUkoQV2zWnTlVkoQ3Z9NfC+wbTfCkNvJjzYnaNivTI4r9Gy2Dp4dRe
3446PrsHHkpcvY66vUO0KACgAoAKACgAoAan8X1qUA6qAKACgAoAKACgAoAKACgAoAKACgAoAKAPi+v
345yI/PwoA0dB8PX/ibUEs9Ot2uJm64+6g9WPYVtRo1K81Tpq7Omhh6mIlywR9G/D34bWfge18w7bnU
3465FxLckfd/wBlPQfzr7/L8uhg1zPWb6/oj6zDYaGGjaO/Vmv4TTy9NlH/AE8SH/x6u3Cq0H6sugrR
347+bNuus6AoAKACgAoAKACgBqjaKSVgHUwCgAoAKACgAoAKACgAoAKACgAoAKACgD440/S7zVrgQWV
348rNdTH+CFCx/SvySEJVJcsFd+R8NToVK3wRuem+FPgNqF+Vm1uYafD18iMhpW/HoP1r6HC5JWq613
349yr8f8kezQyvrWfyX+Z7PoHhvTvDFiLXTbVLaIdSOWc+rHqT9a+ww+GpYWPJSVv19T3YQjTXLBWRp
35011FmZ4fj8uycf9NnP61z0FaPzZjSVomnXQbBQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAF
351ABQAUAFAEFpY29hEIraCK3jHRIkCj8hWcKcKS5YJJeQE9aAFABQBT0xPLt2H+2x/WsqasiIaIuVq
352WFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAEcKeWpHuTSSsJKxJT
353GFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAf/2Q==</one:Data></one:Image></one:Page>
corpus/notebook-management/cold/read/page-001.navigation.json created+13
......@@ -0,0 +1,13 @@
1{
2 "exit": 0,
3 "stdout": "",
4 "stderr": "",
5 "w": 800,
6 "h": 600,
7 "error": null,
8 "win": {
9 "title": "Untitled page (Read-Only - Recycle Bin) - Microsoft OneNote",
10 "class": "Framework::CFrame",
11 "dialog": false
12 }
13}
\ No newline at end of file
corpus/notebook-management/cold/read/page-001.png created
Binary files /dev/null and b/corpus/notebook-management/cold/read/page-001.png differ
corpus/notebook-management/cold/read/page-001.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{3558FDF0-CC7B-0FEE-2928-F5AACC9D6CC6}{1}{B0}" name="Untitled page" dateTime="2026-09-27T15:05:18.000Z" lastModifiedTime="2026-09-27T15:06:56.000Z" pageLevel="1" isInRecycleBin="true"><one:QuickStyleDef index="0" name="PageTitle" font="Calibri" fontSize="17.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="Rust Author" authorInitials="RA" lastModifiedBy="Rust Author" lastModifiedByInitials="RA" creationTime="2026-09-27T15:05:18.000Z" lastModifiedTime="2026-09-27T15:05:18.000Z" objectID="{3558FDF0-CC7B-0FEE-2928-F5AACC9D6CC6}{15}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/notebook-management/cold/read/page-002.navigation.json created+13
......@@ -0,0 +1,13 @@
1{
2 "exit": 0,
3 "stdout": "",
4 "stderr": "",
5 "w": 800,
6 "h": 600,
7 "error": null,
8 "win": {
9 "title": "Untitled page - Microsoft OneNote",
10 "class": "Framework::CFrame",
11 "dialog": false
12 }
13}
\ No newline at end of file
corpus/notebook-management/cold/read/page-002.png created
Binary files /dev/null and b/corpus/notebook-management/cold/read/page-002.png differ
corpus/notebook-management/cold/read/page-002.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{47477E0D-48A7-0136-0152-C6779571DCE0}{1}{B0}" name="Untitled page" dateTime="2026-09-27T15:05:18.000Z" lastModifiedTime="2026-09-27T15:06:55.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" font="Calibri" fontSize="17.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="Rust Author" authorInitials="RA" lastModifiedBy="Rust Author" lastModifiedByInitials="RA" creationTime="2026-09-27T15:05:18.000Z" lastModifiedTime="2026-09-27T15:05:18.000Z" objectID="{47477E0D-48A7-0136-0152-C6779571DCE0}{15}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/notebook-management/cold/read/page-003.navigation.json created+13
......@@ -0,0 +1,13 @@
1{
2 "exit": 0,
3 "stdout": "",
4 "stderr": "",
5 "w": 800,
6 "h": 600,
7 "error": null,
8 "win": {
9 "title": "Untitled page - Microsoft OneNote",
10 "class": "Framework::CFrame",
11 "dialog": false
12 }
13}
\ No newline at end of file
corpus/notebook-management/cold/read/page-003.png created
Binary files /dev/null and b/corpus/notebook-management/cold/read/page-003.png differ
corpus/notebook-management/cold/read/page-003.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{55E20DD4-C6DF-0DF3-0618-FE208667B93B}{1}{B0}" name="Untitled page" dateTime="2026-09-27T15:05:18.000Z" lastModifiedTime="2026-09-27T15:06:55.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" font="Calibri" fontSize="17.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="Rust Author" authorInitials="RA" lastModifiedBy="Rust Author" lastModifiedByInitials="RA" creationTime="2026-09-27T15:05:18.000Z" lastModifiedTime="2026-09-27T15:05:18.000Z" objectID="{55E20DD4-C6DF-0DF3-0618-FE208667B93B}{15}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/notebook-management/cold/read/page-004.navigation.json created+13
......@@ -0,0 +1,13 @@
1{
2 "exit": 0,
3 "stdout": "",
4 "stderr": "",
5 "w": 800,
6 "h": 600,
7 "error": null,
8 "win": {
9 "title": "Deleted page (Read-Only - Recycle Bin) - Microsoft OneNote",
10 "class": "Framework::CFrame",
11 "dialog": false
12 }
13}
\ No newline at end of file
corpus/notebook-management/cold/read/page-004.png created
Binary files /dev/null and b/corpus/notebook-management/cold/read/page-004.png differ
corpus/notebook-management/cold/read/page-004.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{62BD21F9-A2BA-005E-1F59-EF1CDF7BEEA2}{1}{B0}" name="Deleted page" dateTime="2026-09-27T15:05:18.000Z" lastModifiedTime="2026-09-27T15:06:55.000Z" pageLevel="1" isInRecycleBin="true"><one:QuickStyleDef index="0" name="PageTitle" font="Calibri" fontSize="17.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="Rust Author" authorInitials="RA" lastModifiedBy="Rust Author" lastModifiedByInitials="RA" creationTime="2026-09-27T15:05:18.000Z" lastModifiedTime="2026-09-27T15:05:18.000Z" objectID="{62BD21F9-A2BA-005E-1F59-EF1CDF7BEEA2}{15}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Deleted page]]></one:T></one:OE></one:Title></one:Page>
corpus/notebook-management/cold/read/page-005.navigation.json created+13
......@@ -0,0 +1,13 @@
1{
2 "exit": 0,
3 "stdout": "",
4 "stderr": "",
5 "w": 800,
6 "h": 600,
7 "error": null,
8 "win": {
9 "title": "Untitled page (Read-Only - Recycle Bin) - Microsoft OneNote",
10 "class": "Framework::CFrame",
11 "dialog": false
12 }
13}
\ No newline at end of file
corpus/notebook-management/cold/read/page-005.png created
Binary files /dev/null and b/corpus/notebook-management/cold/read/page-005.png differ
corpus/notebook-management/cold/read/page-005.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{74F191CB-FE67-09DF-356B-4A5D4126CC00}{1}{B0}" name="Untitled page" dateTime="2026-09-27T15:05:18.000Z" lastModifiedTime="2026-09-27T15:06:56.000Z" pageLevel="1" isInRecycleBin="true"><one:QuickStyleDef index="0" name="PageTitle" font="Calibri" fontSize="17.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="Rust Author" authorInitials="RA" lastModifiedBy="Rust Author" lastModifiedByInitials="RA" creationTime="2026-09-27T15:05:18.000Z" lastModifiedTime="2026-09-27T15:05:18.000Z" objectID="{74F191CB-FE67-09DF-356B-4A5D4126CC00}{15}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/notebook-management/cold/read/page-006.navigation.json created+13
......@@ -0,0 +1,13 @@
1{
2 "exit": 0,
3 "stdout": "",
4 "stderr": "",
5 "w": 800,
6 "h": 600,
7 "error": null,
8 "win": {
9 "title": "Moved page - Microsoft OneNote",
10 "class": "Framework::CFrame",
11 "dialog": false
12 }
13}
\ No newline at end of file
corpus/notebook-management/cold/read/page-006.png created
Binary files /dev/null and b/corpus/notebook-management/cold/read/page-006.png differ
corpus/notebook-management/cold/read/page-006.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{7AE713B6-6C9E-01DB-2CAE-88CD81372C8D}{1}{B0}" name="Moved page" dateTime="2026-09-27T15:05:19.000Z" lastModifiedTime="2026-09-27T15:06:55.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" font="Calibri" fontSize="17.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="Rust Author" authorInitials="RA" lastModifiedBy="Rust Author" lastModifiedByInitials="RA" creationTime="2026-09-27T15:05:19.000Z" lastModifiedTime="2026-09-27T15:05:19.000Z" objectID="{7AE713B6-6C9E-01DB-2CAE-88CD81372C8D}{15}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Moved page]]></one:T></one:OE></one:Title></one:Page>
corpus/notebook-management/cold/read/page-007.navigation.json created+13
......@@ -0,0 +1,13 @@
1{
2 "exit": 0,
3 "stdout": "",
4 "stderr": "",
5 "w": 800,
6 "h": 600,
7 "error": null,
8 "win": {
9 "title": "Subpage - Microsoft OneNote",
10 "class": "Framework::CFrame",
11 "dialog": false
12 }
13}
\ No newline at end of file
corpus/notebook-management/cold/read/page-007.png created
Binary files /dev/null and b/corpus/notebook-management/cold/read/page-007.png differ
corpus/notebook-management/cold/read/page-007.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{B165F185-8BBE-02BF-0EF8-0B851D19283C}{1}{B0}" name="Subpage" dateTime="2026-09-27T15:05:18.000Z" lastModifiedTime="2026-09-27T15:06:55.000Z" pageLevel="2"><one:QuickStyleDef index="0" name="PageTitle" font="Calibri" fontSize="17.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="Rust Author" authorInitials="RA" lastModifiedBy="Rust Author" lastModifiedByInitials="RA" creationTime="2026-09-27T15:05:18.000Z" lastModifiedTime="2026-09-27T15:05:18.000Z" objectID="{B165F185-8BBE-02BF-0EF8-0B851D19283C}{15}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Subpage]]></one:T></one:OE></one:Title></one:Page>
corpus/notebook-management/cold/read/page-008.navigation.json created+13
......@@ -0,0 +1,13 @@
1{
2 "exit": 0,
3 "stdout": "",
4 "stderr": "",
5 "w": 800,
6 "h": 600,
7 "error": null,
8 "win": {
9 "title": "Teal page - Microsoft OneNote",
10 "class": "Framework::CFrame",
11 "dialog": false
12 }
13}
\ No newline at end of file
corpus/notebook-management/cold/read/page-008.png created
Binary files /dev/null and b/corpus/notebook-management/cold/read/page-008.png differ
corpus/notebook-management/cold/read/page-008.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{B3F3B40B-51ED-0DAC-3B9A-41F9193141F1}{1}{B0}" name="Teal page" dateTime="2026-09-27T15:05:18.000Z" lastModifiedTime="2026-09-27T15:06:55.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" font="Calibri" fontSize="17.0"/><one:PageSettings RTL="false" color="#D4F9F2"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="Rust Author" authorInitials="RA" lastModifiedBy="Rust Author" lastModifiedByInitials="RA" creationTime="2026-09-27T15:05:18.000Z" lastModifiedTime="2026-09-27T15:05:18.000Z" objectID="{B3F3B40B-51ED-0DAC-3B9A-41F9193141F1}{15}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Teal page]]></one:T></one:OE></one:Title></one:Page>
corpus/notebook-management/cold/read/page-009.navigation.json created+13
......@@ -0,0 +1,13 @@
1{
2 "exit": 0,
3 "stdout": "",
4 "stderr": "",
5 "w": 800,
6 "h": 600,
7 "error": null,
8 "win": {
9 "title": "Garden plan - Microsoft OneNote",
10 "class": "Framework::CFrame",
11 "dialog": false
12 }
13}
\ No newline at end of file
corpus/notebook-management/cold/read/page-009.png created
Binary files /dev/null and b/corpus/notebook-management/cold/read/page-009.png differ
corpus/notebook-management/cold/read/page-009.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{C8939848-C2F8-029B-283F-6182C86D398F}{1}{B0}" name="Garden plan" dateTime="2026-09-27T15:04:13.000Z" lastModifiedTime="2026-09-27T15:06:55.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" font="Calibri" fontSize="17.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="Rust Author" authorInitials="RA" lastModifiedBy="Rust Author" lastModifiedByInitials="RA" creationTime="2026-09-27T15:04:13.000Z" lastModifiedTime="2026-09-27T15:05:18.000Z" objectID="{C8939848-C2F8-029B-283F-6182C86D398F}{15}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Garden plan]]></one:T></one:OE></one:Title></one:Page>
corpus/notebook-management/cold/read/page-010.navigation.json created+13
......@@ -0,0 +1,13 @@
1{
2 "exit": 0,
3 "stdout": "",
4 "stderr": "",
5 "w": 800,
6 "h": 600,
7 "error": null,
8 "win": {
9 "title": "Meeting page - Microsoft OneNote",
10 "class": "Framework::CFrame",
11 "dialog": false
12 }
13}
\ No newline at end of file
corpus/notebook-management/cold/read/page-010.png created
Binary files /dev/null and b/corpus/notebook-management/cold/read/page-010.png differ
corpus/notebook-management/cold/read/page-010.xml created+345
......@@ -0,0 +1,345 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{FCDE8FFE-7639-038D-395D-6F3F40481CAC}{1}{B0}" name="Meeting page" dateTime="2026-09-27T15:05:18.000Z" lastModifiedTime="2026-09-27T15:06:55.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="To Do"/><one:QuickStyleDef index="0" name="PageTitle" font="Calibri" fontSize="17.0"/><one:QuickStyleDef index="1" 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="Rust Author" authorInitials="RA" lastModifiedBy="Rust Author" lastModifiedByInitials="RA" creationTime="2026-09-27T15:05:18.000Z" lastModifiedTime="2026-09-27T15:05:18.000Z" objectID="{FCDE8FFE-7639-038D-395D-6F3F40481CAC}{15}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Meeting page]]></one:T></one:OE></one:Title><one:Image format="jpg" backgroundImage="true" lastModifiedTime="2026-09-27T15:05:19.000Z" objectID="{8718E711-00F2-0E79-2027-EC9413478A5F}{2}{B0}"><one:Position x="-18.0" y="-39.59999465942383" z="0"/><one:Size width="610.2999877929687" height="789.7999877929687" isSetByUser="true"/><one:Data>/9j/4AAQSkZJRgABAgAAAQABAAD//gAkU25vd2JvdW5kIHRlbXBsYXRlIHNtYWxsLXB1c2gtcGlu
3c//AABEIAxgCZAMBEQACEQEDEQH/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsK
4CwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQU
5FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/xAAfAAABBQEBAQEB
6AQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEH
7InEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFla
8Y2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbH
9yMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQID
10BAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJ
11IzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1
12dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY
132dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AP1ToAKACgAoAa7rGjO7BVUZLMcAD1oS
14vogOF1j4tWFjcGKztnvwpwZN+xPw4JP5V61PLpzV5uxyyxEU9NTsdK1KHWNOgvLc5imUMM9R6g+4
15PH4V5tSDpycJdDojJSV0W6zKCgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgA
16oAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACg
17AoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDzb4u65c24ttNi3RwTJ5kjj+PnAX8OpHuK
189rLqUZXqPdHFiJNe6eYV7xwnoHws8VR6fLNpt5MsVvJmSJ5GAVW7jJ9R/L3rx8fh3NKpBanZQqW9
191npNtrum3kojg1C0nkPRI51Yn8Aa8SVKpFXlFr5HapxezL9ZFBQAUAFABQAUAFABQAUAFABQAUAF
20ABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUA
21FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAFHWNGtNdsmt
22byISxnkHup9QexrWnVlSlzQZMoqaszxfxh4LufCs4YnzrKRsRzD167WHY/zr6bDYqOIVtmebUpOn
236HO12mA6NGkkVUVmdiAqqMkn2pNpLUZ754Ph1G38P2seqEm6UH7xywXPAY+uK+RxLpuq3T2PWpqS
24iuY2q5jQKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgA
25oAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACg
26AoAKACgAoAKAEoAM0AAbNABQAZoA8z+Msz/8SqLkRnzG9iflH6Z/WvcyxL336HFiXsed2FhcandJ
27bWsTTTOcKi/54HvXsznGmuaTsjjScnZHpvw50Sz0rVb60vYCuu23zDzOVMR6PH6jqCeo6cZxXz+L
28xEqsU4/C/wCtTvpQUXrueiV5R1BQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAB
29QAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFA
30BQAUAFABQAUAFABQAUAFABQAUAFABQAUAQzSiJcmmlcVzGu/EMcDEbq6o0WzNzsFpr6Tt1FEqLQl
31O5l/ETVpYfBt+9nPLb3A8vbLC5Vh+8XOCOema6MFTTrx51da/kzOvJqm7Mzm8Kov/MzeIT/3EP8A
327GtvrDf/AC6h9xHsv77+8z9V8B2mqwbJdf1mV15Rri5EgU/Qj+tawxcqb0px+SsRKipfaf3jtK+H
33lhpq5g1zWYJmADvBdCPd+S9PbNFTGzn8VOLXmrjVCK2kyxf/AA5jvgs8HiXXF1GFW+zzy3u7YSOh
34wucHvisfrbWjpxt6Fex/vP7y1pHg0anbbm8SeJILiM7JoDqOTG/cZ28juD3BFTPF8r/hQ/8AAf8A
35gjVG/wBt/eX/APhXP/U0eJP/AAYf/Y1n9d/6dQ/8B/4JXsP77+8X/hXH/U0eJP8AwYf/AGNH13/p
361D/wH/gh7D+/L7w/4Vx/1NHiT/wYf/Y0fXf+nUP/AAH/AIIew/vy+8P+Fcf9TR4k/wDBh/8AY0fX
37f+nUP/Af+CHsP78vvD/hXH/U0eJP/Bh/9jR9d/6dQ/8AAf8Agh7D+/L7w/4Vx/1NHiT/AMGH/wBj
38R9d/6dQ/8B/4Iew/vy+8P+Fcf9TR4k/8GH/2NH13/p1D/wAB/wCCHsP78vvD/hXH/U0eJP8AwYf/
39AGNH13/p1D/wH/gh7D+/L7w/4Vx/1NHiT/wYf/Y0fXf+nUP/AAH/AIIew/vy+8P+Fcf9TR4k/wDB
40h/8AY0fXf+nUP/Af+CHsP78vvD/hXH/U0eJP/Bh/9jR9d/6dQ/8AAf8Agh7D+/L7w/4Vx/1NHiT/
41AMGH/wBjR9d/6dQ/8B/4Iew/vy+8P+Fcf9TR4k/8GH/2NH13/p1D/wAB/wCCHsP78vvD/hXH/U0e
42JP8AwYf/AGNH13/p1D/wH/gh7D+/L7w/4Vx/1NHiT/wYf/Y0fXf+nUP/AAH/AIIew/vy+8P+Fcf9
43TR4k/wDBh/8AY0fXf+nUP/Af+CHsP78vvD/hXH/U0eJP/Bh/9jR9d/6dQ/8AAf8Agh7D+/L7w/4V
44x/1NHiT/AMGH/wBjR9d/6dQ/8B/4Iew/vy+8P+Fcf9TR4k/8GH/2NH13/p1D/wAB/wCCHsP78vvD
45/hXH/U0eJP8AwYf/AGNH13/p1D/wH/gh7D+/L7w/4Vx/1NHiT/wYf/Y0fXf+nUP/AAH/AIIew/vy
46+8P+Fcf9TR4k/wDBh/8AY0fXf+nUP/Af+CHsP78vvD/hXH/U0eJP/Bh/9jR9d/6dQ/8AAf8Agh7D
47+/L7w/4Vx/1NHiT/AMGH/wBjR9d/6dQ/8B/4Iew/vy+8P+Fcf9TR4k/8GH/2NH13/p1D/wAB/wCC
48HsP78vvD/hXH/U0eJP8AwYf/AGNH13/p1D/wH/gh7D+/L7w/4Vx/1NHiT/wYf/Y0fXf+nUP/AAH/
49AIIew/vy+8P+Fcf9TR4k/wDBh/8AY0fXf+nUP/Af+CHsP78vvD/hXH/U0eJP/Bh/9jR9d/6dQ/8A
50Af8Agh7D++/vFHw6x/zM/iP/AMGH/wBjR9d/6dQ+7/gj9h/ff3ij4eY/5mbxF/4H/wD2NL67/wBO
51ofd/wQ9h/ff3i/8ACvv+pl8Q/wDgf/8AY0fXP+nUPuD2H95/eO/4QD/qZPEH/gd/9jS+uf8ATuP3
52B7H+8/vFHgLH/Mx6/wD+B3/2NH1z/p3H7g9j/ef3ijwHj/mYte/8Df8A7Gl9b/6dx+4fsf7z+8Ue
53Bcf8zBrv/gb/APY0fW/+ncfuD2P95/eOHgfH/Mf1z/wN/wDsaX1r/p3H7g9j/ef3ijwTj/mPa5/4
54Gf8A2NH1r/p3H7h+y/vP7xR4Lx/zHdb/APAz/wCtS+tf9O4/cHsv7z+8UeDcf8xzWv8AwL/+tR9Z
55/wCncfuD2X95/eOHg/H/ADG9Z/8AAv8A+tS+s/3I/cHsv7z+8UeEcf8AMa1j/wACv/rUfWf7kfuH
567L+8/vF/4RL/AKjOr/8AgV/9al9Y/uR+4PZ/3n947/hFP+oxq3/gV/8AWo+sf3I/cHs/7z+8X/hF
57v+ovqv8A4E//AFqX1j+5H7h+z82KPDGP+Ytqn/gT/wDWo9v/AHF9wez82O/4Rr/qK6n/AOBH/wBa
58l7f+4vuD2fmxR4cx/wAxTUv/AAI/+tR7b+6vuDk82L/wj3/US1H/AL//AP1qXtv7q+4OTzYo0DH/
59ADEdQ/7/AP8A9aj2391fcPk82O/sL/qIX/8A3/8A/rUvbf3V9wcnmxRomP8Al/vv+/3/ANaj2v8A
60dX3ByebHf2N/0/Xv/f7/AOtR7X+6vuHy+bFGkY/5fbz/AL+//Wpe0/ur7g5fNi/2V/0+Xf8A39/+
61tS9p/dQcvmKNMx/y93X/AH8/+tR7TyQcvmO/s7/p6uf+/n/1qXP5IfL5ijT8f8vNx/33Rz+SDl8x
62RY4/5eJ/++6OfyQco4WeP+W03/fdLm8gsKLXH/LWX/vqjm8h2FFvj/lpJ/31S5vILCiHH8b/AJ0r
63hYcI8fxN+dFwsKFx3NAxcUgFoAKAM3Vg3kNitqe5Ejy/XLiVJ2BPFe9SSaOCbGabqLxnrRUgmEZF
64rxDfNd6NPGT8rbf/AEIVFGPLUTHN3iXGu3Pc1lyl3G/aXz1oshXHLduD1o5R3LMGqPGetZuCZSka
65lnqaidZ9wRwNrE8bl9D9O31PqawnT6GikdVbTiZMiuCUbGyZPUlC0AFABQAUAFABQAUAFABQAUAF
66ABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUA
67FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQBUvseS2cVpDclnl3igL55x6
68171DY4am5gRS7GrraMEWb253adKPp/MVEI+8im9DbBzXIzUWpAKACmBXklLybecCtErIlnR+HNea
69wIiny0B790/+tXFXo8+q3N4TtozauPGMEcmIoGlUfxE7a5o4Ztas1dRGvpuoR6naiaMMozghuxrn
70nB03ZmkXzK5arMoKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgA
71oAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACg
72AoAKACgAoAKAM7VS3kHFbU9yJHm2s2EtxO3Br26c0kcUk2Zq6NKT901r7ZEcg3V9Me00meRgQBt/
739CFOlUUppClG0bm6LN1HSuXmNrB9mfPSldBYcto57UcyCxZh0t5D0qHNIpRJP+ETnOWjYN32txS+
74sR6h7N9CrPayWMnlzIUbGcGtFJT1RDVtyNHVnVSyoGIG5jgDPFN6K4LU7yzuIbK2jhjxtQY+vvXk
75yTk7s607aE66gpPWp5CrkiXit3qXFoLkyyBqixQ6gBaACgAoAKACgAoAKACgAoAKACgAoAKACgAo
76AKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgA
77oAKACgAoAKACgAoAKACgAoAKACgAoAKAIpohKuDTTsKxnyaNE+SVrb2rRPKUpdKRH+6Kr2jYuUwv
78iTarbeBNSlUYK+Vz/wBtUFduBlzYmK9fyZz4hWpNnUPoyHtXD7VnRykf9iJn7tP2rFykqaOg7UnU
79HylmPT0TtUObY7EV3KLdTinFcwPQ47xE7TyrMMkAbT7V6VBWVjmnqVtPt0eFzKiyK4xtcZGPpV1H
800QookijmsOLWQtD/AM8JTkL/ALp6j6HI+lZ2T3K2LkOoM4/iVh1VuCKlwHcsR6gw71DgO5qWGoly
81BWE4GiZuRNuTNcr0NCSkMKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAo
82AKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgA
83oAKACgAoASgAIzQBWmi3GmmI5P4rrt+Herf9sv8A0clell3+9Q+f5M5sT/Cf9dTtcV5h1BigAxQA
84UAUb61MoNawlYhowbjTWyeK64zMnEqtZMvatOYVhhtX9DT5hWFFmxP3aOYLEsensx6VDmOxqWGnF
85CDzWE5miRuRLsTFcrNCSkMKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgA
86oAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACg
87AoAKACgAoAKACgBpXNAHH/Fsf8W81X/tl/6OSvSy7/eofP8AJnLiv4T/AK6nZV5p1BQAUAJQAEZF
88AETW6t2p3FYiawU9qvnYrDP7NX0FPnCwo05R2FLnCxIlmq9qlybHYmWML2qbjHUALQAUAFABQAUA
89FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAU
90AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQBx/xc/5J5qv/bL/
91ANHJXpZd/vUPn+TOXFfwn/XU7CvNOoKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACg
92AoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAC
93gAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA4/4uf8AJPNV/wC2X/o5K9LL
94v96h8/yZy4r+E/66nYV5p1BQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUA
95FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAU
96AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAHH/ABc/5J5qv/bL/wBHJXpZd/vUPn+T
97OXFfwn/XU7CvNOoKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgA
98oAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACg
99AoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA4/4uf8k81X/tl/6OSvSy7/AHqHz/JnLiv4T/rq
100dhXmnUFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUA
101FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAU
102AFABQAUAFABQAUAFABQAUAFABQAUAcf8XP8Aknmq/wDbL/0clell3+9Q+f5M5cV/Cf8AXU7CvNOo
103KACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAo
104AKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgA
105oAKACgAoAKACgAoAKACgAoA4/wCLn/JPNV/7Zf8Ao5K9LLv96h8/yZy4r+E/66nYV5p1BQAUAFAB
106QAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFA
107BQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAF
108ABQAUAFABQAUAFAHH/Fz/knmq/8AbL/0clell3+9Q+f5M5cV/Cf9dTsK806goAKACgAoAKACgAoA
109KACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAo
110AKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgA
111oAKACgDj/i5/yTzVf+2X/o5K9LLv96h8/wAmcuK/hP8ArqdhXmnUFABQAUAFABQAUAFABQAUAFAB
112QAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFA
113BQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAc
114f8XP+Sear/2y/wDRyV6WXf71D5/kzlxX8J/11OwrzTqCgAoAKACgAoAKACgAoAKACgAoAKACgAoA
115KACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAo
116AKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAOP+Ln/ACTz
117Vf8Atl/6OSvSy7/eofP8mcuK/hP+up2FeadQUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAB
118QAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFA
119BQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQBx/wAXP+Sear/2y/8A
120RyV6WXf71D5/kzlxX8J/11OwrzTqCgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAK
121ACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA
122KACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAOP+Ln/JPNV/7Zf+jkr0su/wB6
123h8/yZy4r+E/66nYV5p1BQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAB
124QAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFA
125BQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAHH/Fz/AJJ5qv8A2y/9HJXpZd/vUPn+TOXF
126fwn/AF1OwrzTqCgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKA
127CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAK
128ACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAOP8Ai5/yTzVf+2X/AKOSvSy7/eofP8mcuK/hP+up
1292FeadQUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQA
130UAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQ
131AUAFABQAUAFABQAUAFABQAUAFABQBx/xc/5J5qv/AGy/9HJXpZd/vUPn+TOXFfwn/XU7CvNOoKAC
132gAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKA
133CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAK
134ACgAoAKACgAoAKACgAoA4/4uf8k81X/tl/6OSvSy7/eofP8AJnLiv4T/AK6nYV5p1BQAUAFABQAU
135AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQA
136UAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQ
137AUAFABQAUAFAHH/Fz/knmq/9sv8A0clell3+9Q+f5M5cV/Cf9dTsK806goAKACgAoAKACgAoAKAC
138gAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKA
139CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAK
140ACgDj/i5/wAk81X/ALZf+jkr0su/3qHz/JnLiv4T/rqdhXmnUFABQAUAFABQAUAFABQAUAFABQAU
141AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQA
142UAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAcf8A
143Fz/knmq/9sv/AEclell3+9Q+f5M5cV/Cf9dTsK806goAKACgAoAKACgAoAKACgAoAKACgAoAKACg
144AoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAC
145gAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj/i5/yTzVf+
1462X/o5K9LLv8AeofP8mcuK/hP+up2FeadQUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAU
147AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQA
148UAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQBx/xc/wCSear/ANsv/RyV
1496WXf71D5/kzlxX8J/wBdTsK806goAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgA
150oAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACg
151AoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj/AIuf8k81X/tl/wCjkr0su/3q
152Hz/JnLiv4T/rqdhXmnUFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAF
153ABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUA
154FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAcf8XP+Sear/wBsv/RyV6WXf71D5/kzlxX8
155J/11OwrzTqCgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgA
156oAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACg
157AoAKACgAoAKACgAoAKACgAoAKACgAoAKAOP+Ln/JPNV/7Zf+jkr0su/3qHz/ACZy4r+E/wCup2Fe
158adQUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAF
159ABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUA
160FABQAUAFABQAUAFABQAUAFABQBx/xc/5J5qv/bL/ANHJXpZd/vUPn+TOXFfwn/XU7CvNOoKACgAo
161AKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgA
162oAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACg
163AoAKACgAoAKACgAoA4/4uf8AJPNV/wC2X/o5K9LLv96h8/yZy4r+E/66nYV5p1BQAUAFABQAUAFA
164BQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAF
165ABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUA
166FABQAUAFAHH/ABc/5J5qv/bL/wBHJXpZd/vUPn+TOXFfwn/XU7CvNOoKACgAoAKACgAoAKACgAoA
167KACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAo
168AKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgA
169oA4/4uf8k81X/tl/6OSvSy7/AHqHz/JnLiv4T/rqdhXmnUFABQAUAFABQAUAFABQAUAFABQAUAFA
170BQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAF
171ABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAcf8XP8A
172knmq/wDbL/0clell3+9Q+f5M5cV/Cf8AXU7CvNOoKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAK
173ACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA
174KACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA4/wCLn/JPNV/7
175Zf8Ao5K9LLv96h8/yZy4r+E/66nYV5p1BQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQ
176AUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAB
177QAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAHH/Fz/knmq/8AbL/0clel
178l3+9Q+f5M5cV/Cf9dTsK806goAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAK
179ACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA
180KACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj/i5/yTzVf+2X/o5K9LLv96h8/wAm
181cuK/hP8ArqdhXmnUFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQ
182AUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAB
183QAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAcf8XP+Sear/2y/wDRyV6WXf71D5/kzlxX8J/1
1841OwrzTqCgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAK
185ACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA
186KACgAoAKACgAoAKACgAoAKACgAoAKAOP+Ln/ACTzVf8Atl/6OSvSy7/eofP8mcuK/hP+up2FeadQ
187UAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQ
188AUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAB
189QAUAFABQAUAFABQAUAFABQBx/wAXP+Sear/2y/8ARyV6WXf71D5/kzlxX8J/11OwrzTqCgAoAKAC
190gAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKA
191CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAK
192ACgAoAKACgAoAKAOP+Ln/JPNV/7Zf+jkr0su/wB6h8/yZy4r+E/66nYV5p1BQAUAFABQAUAFABQA
193UAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQ
194AUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAB
195QAUAFAHH/Fz/AJJ5qv8A2y/9HJXpZd/vUPn+TOXFfwn/AF1OwrzTqCgAoAKACgAoAKACgAoAKACg
196AoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAC
197gAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKA
198OP8Ai5/yTzVf+2X/AKOSvSy7/eofP8mcuK/hP+up2FeadQUAFABQAUAFABQAUAFABQAUAFABQAUA
199FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAU
200AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQBx/xc/5J
2015qv/AGy/9HJXpZd/vUPn+TOXFfwn/XU7CvNOoKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACg
202AoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAC
203gAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA4/4uf8k81X/tl/6O
204SvSy7/eofP8AJnLiv4T/AK6nYV5p1BQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUA
205FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAU
206AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAHH/Fz/knmq/9sv8A0clell3+
2079Q+f5M5cV/Cf9dTsK806goAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACg
208AoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAC
209gAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj/i5/wAk81X/ALZf+jkr0su/3qHz/JnL
210iv4T/rqdhXmnUFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUA
211FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAU
212AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAcf8AFz/knmq/9sv/AEclell3+9Q+f5M5cV/Cf9dT
213sK806goAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgA
214oAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACg
215AoAKACgAoAKACgAoAKACgAoAKACgDj/i5/yTzVf+2X/o5K9LLv8AeofP8mcuK/hP+up2FeadQUAF
216ABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUA
217FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAU
218AFABQAUAFABQAUAFABQBx/xc/wCSear/ANsv/RyV6WXf71D5/kzlxX8J/wBdTsK806goAKACgAoA
219KACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAo
220AKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgA
221oAKACgAoAKACgDj/AIuf8k81X/tl/wCjkr0su/3qHz/JnLiv4T/rqdhXmnUFABQAUAFABQAUAFAB
222QAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFA
223BQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAF
224ABQAUAcf8XP+Sear/wBsv/RyV6WXf71D5/kzlxX8J/11OwrzTqCgAoAKACgAoAKACgAoAKACgAoA
225KACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAo
226AKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAOP+
227Ln/JPNV/7Zf+jkr0su/3qHz/ACZy4r+E/wCup2FeadQUAFABQAUAFABQAUAFABQAUAFABQAUAFAB
228QAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFA
229BQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQBx/xc/5J5qv
230/bL/ANHJXpZd/vUPn+TOXFfwn/XU7CvNOoKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA
231KACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAo
232AKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA4/4uc/D3Vf+2X/o1K9L
233Lv8AeofP8mcuJ/hP+up2FeadQUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUA
234FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAU
235AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQByHxZ5+H+q/8AbL/0alejl3+9Q+f5
236M5sT/Cf9dTr6846QoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKA
237CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAK
238ACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDkvitz4B1T/tl/6NSvRy//AHmPz/JnNif4T/rq
239dbXnHSFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUA
240FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAU
241AFABQAUAFABQAUAFABQAUAFABQAUAcn8VBnwFqn/AGy/9GpXoZf/ALzH5/kzmxH8J/11OsrzzpCg
242AoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAC
243gAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKA
244CgAoAKACgAoAKACgAoAKAOU+KXPgTU/+2X/o1K9DAf7zH5/kzmxH8J/11OrrzzpCgAoAKACgAoAK
245ACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA
246KACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAo
247AKACgAoAKAOV+J4z4G1L/tl/6NSu/Af7xH5/kznxH8JnVVwHQFABQAUAFABQAUAFABQAUAFABQAU
248AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQA
249UAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAcv8A
250E0Z8Eal/2y/9GpXfgP8AeI/P8mc+I/hs6iuA6AoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAK
251ACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA
252KACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDmPiUM+CdR/7Z/8A
253oxa7sD/vEfn+TOfEfw2dPXCdAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUA
254FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAU
255AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQBzPxIGfBeo/8AbP8A9GLXdgv94j8/
256yZhX/hs6auE3CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAC
257gAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKA
258CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAOa+Ioz4N1D/tn/wCjFrtwX8ePz/JmFf8Ahs6WuI3C
259gAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKA
260CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAK
261ACgAoAKACgAoAKACgAoAKAOc+IYz4P1D/tn/AOjFrtwX8ePz/JmFf+Gzo64jcKACgAoAKACgAoAK
262ACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA
263KACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAo
264AKACgAoA534gDPhG/wD+2f8A6MWu3B/x4/P8jCv/AA2dFXEbhQAUAFABQAUAFABQAUAFABQAUAFA
265BQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAF
266ABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAHPePh
267nwlff9s//Ri12YP+PH5/kYVv4bOhrjNwoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA
268KACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAo
269AKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDA8djPhS+/4B/6MWuvCfxo
270/P8AIxrfAzfrkNgoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAC
271gAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKA
272CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDB8cjPha9/4B/6GtdeE/jR+f5GNb4Gb1chsFABQ
273AUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAB
274QAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFA
275BQAUAFABQAUAFABQAUAYXjcZ8MXv/AP/AENa68L/ABo/10Ma3wM3a5DYKACgAoAKACgAoAKACgAo
276AKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgA
277oAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACg
278AoAw/Ggz4ZvP+Af+hrXVhf4y/roZVfgZuVymoUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFA
279BQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAF
280ABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQBi+MRnw5d/wDAP/Q1
281rpw38Vf10MqvwM2q5jUKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAK
282ACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA
283KACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAxvF/8AyLt3/wAA/wDQ1rpw38Vf10MqvwM2
284a5jUKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKA
285CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAK
286ACgAoAKACgAoAKACgAoAKACgAoAyPFgz4fuv+Af+hiunD/xV/XQyq/AzXrmNQoAKACgAoAKACgAo
287AKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgA
288oAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACg
289AoAKACgDJ8Vc6Ddf8B/9DFdGH/iIzqfCzWrnNAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAK
290ACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA
291KACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDK8TjOh3P/Af/QhX
292Rh/4iM6nws1a5zQKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgA
293oAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACg
294AoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAy/Eozolz/wH/0IVvQ/iIzqfCzUrA0CgAoAKACg
295AoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAC
296gAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKA
297CgAoAKACgAoAKAM3xEM6Pcf8B/8AQhW9H+IiJ/CaVYFhQAUAFABQAUAFABQAUAFABQAUAFABQAUA
298FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAU
299AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAGd4g50if8A
3004D/6EK2o/GiJ/CaNYlhQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQ
301AUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAB
302QAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAGfrozpU/wDwH/0IVtR+NET+E0KxLCgAoAKA
303CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAK
304ACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA
305KACgAoAKACgAoAKAKOtjOmTf8B/9CFa0vjRE/hL1ZFhQAUAFABQAUAFABQAUAFABQAUAFABQAUAF
306ABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUA
307FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAFLWBnTpfw/m
308K1pfGiJ7F2siwoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgA
309oAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACg
310AoAKACgAoAKACgAoAKACgAoAKACgAoAKACgCnqwzp8v4fzFaU/iRMti5WZQUAFABQAUAFABQAUAF
311ABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUA
312FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAU
313AFABQBV1MZsZPw/mK0p/EiZbFqsygoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAC
314gAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKA
315CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgCtqIzZyfh/MVcPiJlsWagoKAC
316gAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKA
317CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAK
318ACgAoAKACgAoAKACgAoAr3wzav8Ah/Orh8RMtixUFBQAUAFABQAUAFABQAUAFABQAUAFABQAUAFA
319BQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAF
320ABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAEF4M27/h/Oqj
321uJ7E9SMKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAo
322AKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgA
323oAKACgAoAKACgAoAKACgAoAKACgAoAiuRmBvw/nVR3EyWpGFABQAUAFABQAUAFABQAUAFABQAUAF
324ABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUA
325FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUARz8xGm
326txMkpDCgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKA
327CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAK
328ACgAoAKACgAoAKACgAoAKACgAoAKAGScoaaEx9IYUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAU
329AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQA
330UAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAjcigBaACgAoAK
331ACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA
332KACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAo
333AKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgA
334oAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACg
335AoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAC
336gAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKA
337CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD//2Q==</one:Data></one:Image><one:Outline author="Rust Author" authorInitials="RA" lastModifiedBy="Rust Author" lastModifiedByInitials="RA" lastModifiedTime="2026-09-27T15:05:19.000Z" objectID="{8718E711-00F2-0E79-2027-EC9413478A5F}{10}{B0}"><one:Position x="36.0" y="77.4000015258789" z="1"/><one:Size width="141.75" height="26.85543441772461" isSetByUser="true"/><one:Indents><one:Indent level="2" indent="21.60000038146973"/><one:Indent level="3" indent="36.0"/></one:Indents><one:OEChildren><one:OE creationTime="2026-09-27T15:05:19.000Z" lastModifiedTime="2026-09-27T15:05:19.000Z" objectID="{8718E711-00F2-0E79-2027-EC9413478A5F}{5}{B0}" alignment="left" quickStyleIndex="1"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
338style='font-weight:bold'>Agenda</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-27T15:05:19.000Z" lastModifiedTime="2026-09-27T15:05:19.000Z" objectID="{8718E711-00F2-0E79-2027-EC9413478A5F}{8}{B0}" alignment="left" quickStyleIndex="1"><one:List><one:Number numberSequence="0" numberFormat="##." fontSize="11.0" font="Calibri" text="1."/></one:List><one:T><![CDATA[]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:Outline><one:Outline author="Rust Author" authorInitials="RA" lastModifiedBy="Rust Author" lastModifiedByInitials="RA" lastModifiedTime="2026-09-27T15:05:19.000Z" objectID="{8718E711-00F2-0E79-2027-EC9413478A5F}{15}{B0}"><one:Position x="234.0" y="77.4000015258789" z="2"/><one:Size width="137.25" height="26.85543441772461" isSetByUser="true"/><one:Indents><one:Indent level="2" indent="18.0"/><one:Indent level="3" indent="36.0"/></one:Indents><one:OEChildren><one:OE creationTime="2026-09-27T15:05:19.000Z" lastModifiedTime="2026-09-27T15:05:19.000Z" objectID="{8718E711-00F2-0E79-2027-EC9413478A5F}{11}{B0}" alignment="left" quickStyleIndex="1"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
339style='font-weight:bold'>Action Items</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-27T15:05:19.000Z" lastModifiedTime="2026-09-27T15:05:19.000Z" objectID="{8718E711-00F2-0E79-2027-EC9413478A5F}{13}{B0}" alignment="left" quickStyleIndex="1"><one:Tag index="0" completed="false" disabled="false" creationDate="2026-09-27T15:05:19.000Z"/><one:T><![CDATA[]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:Outline><one:Outline author="Rust Author" authorInitials="RA" lastModifiedBy="Rust Author" lastModifiedByInitials="RA" lastModifiedTime="2026-09-27T15:05:19.000Z" objectID="{8718E711-00F2-0E79-2027-EC9413478A5F}{21}{B0}"><one:Position x="423.0" y="77.4000015258789" z="3"/><one:Size width="136.5000152587891" height="26.85543441772461" isSetByUser="true"/><one:Indents><one:Indent level="2" indent="21.60000038146973"/><one:Indent level="3" indent="36.0"/></one:Indents><one:OEChildren><one:OE creationTime="2026-09-27T15:05:19.000Z" lastModifiedTime="2026-09-27T15:05:19.000Z" objectID="{8718E711-00F2-0E79-2027-EC9413478A5F}{16}{B0}" alignment="left" quickStyleIndex="1"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
340style='font-weight:bold'>Important Dates</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-27T15:05:19.000Z" lastModifiedTime="2026-09-27T15:05:19.000Z" objectID="{8718E711-00F2-0E79-2027-EC9413478A5F}{19}{B0}" alignment="left" quickStyleIndex="1"><one:List><one:Bullet bullet="15" fontSize="11.0"/></one:List><one:T><![CDATA[]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:Outline><one:Outline author="Rust Author" authorInitials="RA" lastModifiedBy="Rust Author" lastModifiedByInitials="RA" lastModifiedTime="2026-09-27T15:05:19.000Z" objectID="{8718E711-00F2-0E79-2027-EC9413478A5F}{64}{B0}"><one:Position x="36.0" y="221.3999786376953" z="4"/><one:Size width="529.5" height="214.8434753417969" isSetByUser="true"/><one:Indents><one:Indent level="2" indent="36.0"/><one:Indent level="3" indent="36.0"/></one:Indents><one:OEChildren><one:OE creationTime="2026-09-27T15:05:19.000Z" lastModifiedTime="2026-09-27T15:05:19.000Z" objectID="{8718E711-00F2-0E79-2027-EC9413478A5F}{22}{B0}" alignment="left" quickStyleIndex="1"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
341style='font-weight:bold'>Meeting Details</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-27T15:05:19.000Z" lastModifiedTime="2026-09-27T15:05:19.000Z" objectID="{8718E711-00F2-0E79-2027-EC9413478A5F}{25}{B0}" alignment="left" quickStyleIndex="1"><one:List><one:Bullet bullet="15" fontSize="11.0"/></one:List><one:T><![CDATA[Date and Time:]]></one:T></one:OE><one:OE creationTime="2026-09-27T15:05:19.000Z" lastModifiedTime="2026-09-27T15:05:19.000Z" objectID="{8718E711-00F2-0E79-2027-EC9413478A5F}{28}{B0}" alignment="left" quickStyleIndex="1"><one:List><one:Bullet bullet="15" fontSize="11.0"/></one:List><one:T><![CDATA[Location:]]></one:T></one:OE><one:OE creationTime="2026-09-27T15:05:19.000Z" lastModifiedTime="2026-09-27T15:05:19.000Z" objectID="{8718E711-00F2-0E79-2027-EC9413478A5F}{31}{B0}" alignment="left" quickStyleIndex="1"><one:List><one:Bullet bullet="15" fontSize="11.0"/></one:List><one:T><![CDATA[Attendees:]]></one:T></one:OE></one:OEChildren></one:OE><one:OE creationTime="2026-09-27T15:05:19.000Z" lastModifiedTime="2026-09-27T15:05:19.000Z" objectID="{8718E711-00F2-0E79-2027-EC9413478A5F}{33}{B0}" alignment="left" quickStyleIndex="1"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
342style='font-weight:bold'>Announcements</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-27T15:05:19.000Z" lastModifiedTime="2026-09-27T15:05:19.000Z" objectID="{8718E711-00F2-0E79-2027-EC9413478A5F}{36}{B0}" alignment="left" quickStyleIndex="1"><one:List><one:Bullet bullet="15" fontSize="11.0"/></one:List><one:T><![CDATA[]]></one:T></one:OE></one:OEChildren></one:OE><one:OE creationTime="2026-09-27T15:05:19.000Z" lastModifiedTime="2026-09-27T15:05:19.000Z" objectID="{8718E711-00F2-0E79-2027-EC9413478A5F}{38}{B0}" alignment="left" quickStyleIndex="1"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
343style='font-weight:bold'>Discussion</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-27T15:05:19.000Z" lastModifiedTime="2026-09-27T15:05:19.000Z" objectID="{8718E711-00F2-0E79-2027-EC9413478A5F}{41}{B0}" alignment="left" quickStyleIndex="1"><one:List><one:Bullet bullet="15" fontSize="11.0"/></one:List><one:T><![CDATA[]]></one:T></one:OE></one:OEChildren></one:OE><one:OE creationTime="2026-09-27T15:05:19.000Z" lastModifiedTime="2026-09-27T15:05:19.000Z" objectID="{8718E711-00F2-0E79-2027-EC9413478A5F}{43}{B0}" alignment="left" quickStyleIndex="1"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
344style='font-weight:bold'>Summary</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-27T15:05:19.000Z" lastModifiedTime="2026-09-27T15:05:19.000Z" objectID="{8718E711-00F2-0E79-2027-EC9413478A5F}{46}{B0}" alignment="left" quickStyleIndex="1"><one:List><one:Bullet bullet="15" fontSize="11.0"/></one:List><one:T><![CDATA[]]></one:T></one:OE><one:OE creationTime="2026-09-27T15:05:19.000Z" lastModifiedTime="2026-09-27T15:05:19.000Z" objectID="{8718E711-00F2-0E79-2027-EC9413478A5F}{48}{B0}" alignment="left" quickStyleIndex="1"><one:T><![CDATA[]]></one:T></one:OE></one:OEChildren></one:OE><one:OE creationTime="2026-09-27T15:05:19.000Z" lastModifiedTime="2026-09-27T15:05:19.000Z" objectID="{8718E711-00F2-0E79-2027-EC9413478A5F}{50}{B0}" alignment="left" quickStyleIndex="1"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
345style='font-weight:bold'>Next Meeting</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-27T15:05:19.000Z" lastModifiedTime="2026-09-27T15:05:19.000Z" objectID="{8718E711-00F2-0E79-2027-EC9413478A5F}{53}{B0}" alignment="left" quickStyleIndex="1"><one:List><one:Bullet bullet="15" fontSize="11.0"/></one:List><one:T><![CDATA[Date and Time:]]></one:T></one:OE><one:OE creationTime="2026-09-27T15:05:19.000Z" lastModifiedTime="2026-09-27T15:05:19.000Z" objectID="{8718E711-00F2-0E79-2027-EC9413478A5F}{56}{B0}" alignment="left" quickStyleIndex="1"><one:List><one:Bullet bullet="15" fontSize="11.0"/></one:List><one:T><![CDATA[Location:]]></one:T></one:OE><one:OE creationTime="2026-09-27T15:05:19.000Z" lastModifiedTime="2026-09-27T15:05:19.000Z" objectID="{8718E711-00F2-0E79-2027-EC9413478A5F}{59}{B0}" alignment="left" quickStyleIndex="1"><one:List><one:Bullet bullet="15" fontSize="11.0"/></one:List><one:T><![CDATA[Agenda:]]></one:T></one:OE><one:OE creationTime="2026-09-27T15:05:19.000Z" lastModifiedTime="2026-09-27T15:05:19.000Z" objectID="{8718E711-00F2-0E79-2027-EC9413478A5F}{62}{B0}" alignment="left" quickStyleIndex="1"><one:List><one:Bullet bullet="15" fontSize="11.0"/></one:List><one:T><![CDATA[Notes:]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/notebook-management/cold/read/payloads.json created+3
......@@ -0,0 +1,3 @@
1[
2
3]
\ No newline at end of file
corpus/notebook-management/cold/run.json created+18
......@@ -0,0 +1,18 @@
1{
2 "notebook": "/private/tmp/mgmt4/candidate",
3 "expected_pages": -1,
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/notebook-management/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/notebook-management/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/notebook-management/cold/source.json created+56
......@@ -0,0 +1,56 @@
1[
2 {
3 "path": "Archive/Inner.one",
4 "bytes": 6816,
5 "sha256": "4947149bfe3af5bdf0224e01a0ce95a9849ffad5cbe7d5af4771c6c644850cde",
6 "mtime_ns": 1790521518477003662
7 },
8 {
9 "path": "Archive/Kitchen.one",
10 "bytes": 9992,
11 "sha256": "ea8fea880e9f42ff4999c6d7fd1a90c0977ab2efd0501aa1e4bcee85c6279f55",
12 "mtime_ns": 1790521519374324319
13 },
14 {
15 "path": "Archive/Open Notebook.onetoc2",
16 "bytes": 4200,
17 "sha256": "5a0c4e1078e51e3fdea8660b1ecb73f76048e556d5ae21691428fd798801e5d8",
18 "mtime_ns": 1790521519426971739
19 },
20 {
21 "path": "New Section 1.one",
22 "bytes": 85232,
23 "sha256": "9e903193b2ae555d1aaeeef01b21e749204a0f6a5f9560b18e835f8bc1655097",
24 "mtime_ns": 1790521519332264376
25 },
26 {
27 "path": "OneNote_RecycleBin/Binned.one",
28 "bytes": 6816,
29 "sha256": "d2cb20d7cb2238b5525ce6c5b378323eacc265688b6d78cb32a6bdc7f8db9570",
30 "mtime_ns": 1790521519520939028
31 },
32 {
33 "path": "OneNote_RecycleBin/Gone.one",
34 "bytes": 6816,
35 "sha256": "976f0b7e524ac877d3ced0f803f50a812b5747a9edf8bccc387276f9ccbc16c0",
36 "mtime_ns": 1790521519461432928
37 },
38 {
39 "path": "OneNote_RecycleBin/OneNote_DeletedPages.one",
40 "bytes": 6888,
41 "sha256": "b005c3a26c475d717d87ec66d72eccdfa1d35c72000966fd132728bd086bb860",
42 "mtime_ns": 1790521519201361387
43 },
44 {
45 "path": "OneNote_RecycleBin/Open Notebook.onetoc2",
46 "bytes": 4592,
47 "sha256": "a4784bb35ecae53b6f6ad576c3c0687078e72ace4fba47d004d6498aadfae8b2",
48 "mtime_ns": 1790521519539400089
49 },
50 {
51 "path": "Open Notebook.onetoc2",
52 "bytes": 9392,
53 "sha256": "cbeebc6c391f65d834f819f9ed90077f36ddbcf7f7e41ff72614200a659b2fef",
54 "mtime_ns": 1790521519587646429
55 }
56]
corpus/notebook-management/cold/teardown.json created+1
......@@ -0,0 +1 @@
1{"absent": true}
corpus/notebook-management/native/meeting-template/meeting.xml created+12
......@@ -0,0 +1,12 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{B3F1B4E6-2C23-43DC-8E9D-B0CF692E3F40}{1}{B0}" name="Meeting Title" dateTime="2026-09-27T11:38:36.000Z" lastModifiedTime="2026-09-27T11:38:36.000Z" pageLevel="1" stationeryName="Informal Meeting Notes" isCurrentlyViewed="true" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="To Do"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:Meta name="PageLocID" content="0004"/><one:Meta name="LocVer" content="1"/><one:Meta name="PageVerComment" content=""/><one:Meta name="PageOveride" content="0"/><one:Meta name="PageName" content="Meeting Title"/><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="Microsoft" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2009-07-28T18:49:05.000Z" lastModifiedTime="2026-09-27T11:38:36.000Z" objectID="{1AA5A360-310F-487B-A4A9-2B43E7FB5CBB}{84}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:Meta name="oeLocID" content="0001"/><one:Meta name="oeLocComment" content=""/><one:T><![CDATA[<span
3style='font-weight:bold'>Meeting Title</span>]]></one:T></one:OE></one:Title><one:Image format="jpg" backgroundImage="true" originalPageNumber="0" lastModifiedTime="2009-07-28T18:49:05.000Z" objectID="{1AA5A360-310F-487B-A4A9-2B43E7FB5CBB}{14}{B0}"><one:Position x="-18.0" y="-39.60000228881836" z="0"/><one:Size width="610.261474609375" height="789.75" isSetByUser="true"/><one:CallbackID callbackID="{1AA5A360-310F-487B-A4A9-2B43E7FB5CBB}{14}{B0}"/><one:OCRData lang="en-US"><one:OCRText><![CDATA[•1]]></one:OCRText><one:OCRToken startPos="0" region="0" line="0" x="22.5" y="7.5" width="20.25" height="18.75000190734863"/></one:OCRData></one:Image><one:Outline author="Microsoft" authorInitials="Unknown" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-27T11:38:36.000Z" objectID="{1AA5A360-310F-487B-A4A9-2B43E7FB5CBB}{64}{B0}"><one:Position x="36.0" y="77.4000015258789" z="2"/><one:Size width="141.7499694824219" height="29.85543251037598" isSetByUser="true"/><one:Meta name="outlineLocID" content="0001"/><one:Meta name="outlineLocComment" content=""/><one:Indents><one:Indent level="2" indent="21.60000038146973"/><one:Indent level="3" indent="36.0"/></one:Indents><one:OEChildren><one:OE creationTime="2009-07-28T18:49:05.000Z" lastModifiedTime="2026-09-27T11:38:36.000Z" objectID="{1AA5A360-310F-487B-A4A9-2B43E7FB5CBB}{65}{B0}" alignment="left" quickStyleIndex="0"><one:Meta name="oeLocID" content="0003"/><one:Meta name="oeLocComment" content=""/><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
4style='font-weight:bold'>Agenda</span>]]></one:T><one:OEChildren><one:ChildOELayout spaceBefore="3.0" spaceBetween="1.0"/><one:OE creationTime="2009-07-28T18:49:05.000Z" lastModifiedTime="2026-09-27T11:38:36.000Z" objectID="{1AA5A360-310F-487B-A4A9-2B43E7FB5CBB}{66}{B0}" alignment="left" quickStyleIndex="0"><one:Meta name="oeLocID" content="0002"/><one:Meta name="oeLocComment" content=""/><one:List><one:Number numberSequence="0" numberFormat="##." fontSize="11.0" font="Calibri" text="1."/></one:List><one:T><![CDATA[]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:Outline><one:Outline author="Microsoft" authorInitials="Unknown" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-27T11:38:36.000Z" objectID="{1AA5A360-310F-487B-A4A9-2B43E7FB5CBB}{70}{B0}"><one:Position x="234.0" y="77.4000015258789" z="3"/><one:Size width="137.2499237060547" height="29.85543251037598" isSetByUser="true"/><one:Meta name="outlineLocID" content="0002"/><one:Meta name="outlineLocComment" content=""/><one:Indents><one:Indent level="2" indent="18.0"/><one:Indent level="3" indent="36.0"/></one:Indents><one:OEChildren><one:OE creationTime="2009-07-28T18:49:05.000Z" lastModifiedTime="2026-09-27T11:38:36.000Z" objectID="{1AA5A360-310F-487B-A4A9-2B43E7FB5CBB}{71}{B0}" alignment="left" quickStyleIndex="0"><one:Meta name="oeLocID" content="0005"/><one:Meta name="oeLocComment" content=""/><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
5style='font-weight:bold'>Action Items</span>]]></one:T><one:OEChildren><one:ChildOELayout spaceBefore="3.0" spaceBetween="1.0"/><one:OE creationTime="2009-07-28T18:49:05.000Z" lastModifiedTime="2026-09-27T11:38:36.000Z" objectID="{1AA5A360-310F-487B-A4A9-2B43E7FB5CBB}{72}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="false" disabled="false" creationDate="2026-09-27T11:38:36.000Z"/><one:Meta name="oeLocID" content="0004"/><one:Meta name="oeLocComment" content=""/><one:T><![CDATA[]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:Outline><one:Outline author="Microsoft" authorInitials="Unknown" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-27T11:38:36.000Z" objectID="{1AA5A360-310F-487B-A4A9-2B43E7FB5CBB}{76}{B0}"><one:Position x="423.0" y="77.4000015258789" z="4"/><one:Size width="136.4998779296875" height="29.85543251037598" isSetByUser="true"/><one:Meta name="outlineLocID" content="0003"/><one:Meta name="outlineLocComment" content=""/><one:Indents><one:Indent level="2" indent="21.60000038146973"/><one:Indent level="3" indent="36.0"/></one:Indents><one:OEChildren><one:OE creationTime="2009-07-28T18:49:05.000Z" lastModifiedTime="2026-09-27T11:38:36.000Z" objectID="{1AA5A360-310F-487B-A4A9-2B43E7FB5CBB}{77}{B0}" alignment="left" quickStyleIndex="0"><one:Meta name="oeLocID" content="0007"/><one:Meta name="oeLocComment" content=""/><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
6style='font-weight:bold'>Important Dates</span>]]></one:T><one:OEChildren><one:ChildOELayout spaceBefore="3.0" spaceBetween="1.0"/><one:OE creationTime="2009-07-28T18:49:05.000Z" lastModifiedTime="2026-09-27T11:38:36.000Z" objectID="{1AA5A360-310F-487B-A4A9-2B43E7FB5CBB}{78}{B0}" alignment="left" quickStyleIndex="0"><one:Meta name="oeLocID" content="0006"/><one:Meta name="oeLocComment" content=""/><one:List><one:Bullet bullet="15" fontSize="11.0"/></one:List><one:T><![CDATA[]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:Outline><one:Outline author="Microsoft" authorInitials="Unknown" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-27T11:38:36.000Z" objectID="{1AA5A360-310F-487B-A4A9-2B43E7FB5CBB}{16}{B0}"><one:Position x="36.0" y="221.4000091552734" z="1"/><one:Size width="529.4998779296874" height="307.843505859375" isSetByUser="true"/><one:Meta name="outlineLocID" content="0004"/><one:Meta name="outlineLocComment" content=""/><one:Indents><one:Indent level="2" indent="36.0"/><one:Indent level="3" indent="36.0"/></one:Indents><one:OEChildren><one:OE creationTime="2009-07-28T18:49:05.000Z" lastModifiedTime="2026-09-27T11:38:36.000Z" objectID="{1AA5A360-310F-487B-A4A9-2B43E7FB5CBB}{17}{B0}" alignment="left" quickStyleIndex="0"><one:Meta name="oeLocID" content="00011"/><one:Meta name="oeLocComment" content=""/><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
7style='font-weight:bold'>Meeting Details</span>]]></one:T><one:OEChildren><one:ChildOELayout spaceBefore="6.0" spaceBetween="3.0" spaceAfter="12.0"/><one:OE creationTime="2009-07-28T18:49:05.000Z" lastModifiedTime="2026-09-27T11:38:36.000Z" objectID="{1AA5A360-310F-487B-A4A9-2B43E7FB5CBB}{20}{B0}" alignment="left" quickStyleIndex="0"><one:Meta name="oeLocID" content="0008"/><one:Meta name="oeLocComment" content=""/><one:List><one:Bullet bullet="15" fontSize="11.0"/></one:List><one:T><![CDATA[Date and Time:]]></one:T></one:OE><one:OE creationTime="2009-07-28T18:49:05.000Z" lastModifiedTime="2026-09-27T11:38:36.000Z" objectID="{1AA5A360-310F-487B-A4A9-2B43E7FB5CBB}{25}{B0}" alignment="left" quickStyleIndex="0"><one:Meta name="oeLocID" content="0009"/><one:Meta name="oeLocComment" content=""/><one:List><one:Bullet bullet="15" fontSize="11.0"/></one:List><one:T><![CDATA[Location:]]></one:T></one:OE><one:OE creationTime="2009-07-28T18:49:05.000Z" lastModifiedTime="2026-09-27T11:38:36.000Z" objectID="{1AA5A360-310F-487B-A4A9-2B43E7FB5CBB}{28}{B0}" alignment="left" quickStyleIndex="0"><one:Meta name="oeLocID" content="00010"/><one:Meta name="oeLocComment" content=""/><one:List><one:Bullet bullet="15" fontSize="11.0"/></one:List><one:T><![CDATA[Attendees:]]></one:T></one:OE></one:OEChildren></one:OE><one:OE creationTime="2009-07-28T18:49:05.000Z" lastModifiedTime="2026-09-27T11:38:36.000Z" objectID="{1AA5A360-310F-487B-A4A9-2B43E7FB5CBB}{33}{B0}" alignment="left" quickStyleIndex="0"><one:Meta name="oeLocID" content="00013"/><one:Meta name="oeLocComment" content=""/><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
8style='font-weight:bold'>Announcements</span>]]></one:T><one:OEChildren><one:ChildOELayout spaceBefore="6.0" spaceAfter="18.0"/><one:OE creationTime="2009-07-28T18:49:05.000Z" lastModifiedTime="2026-09-27T11:38:36.000Z" objectID="{1AA5A360-310F-487B-A4A9-2B43E7FB5CBB}{34}{B0}" alignment="left" quickStyleIndex="0"><one:Meta name="oeLocID" content="00012"/><one:Meta name="oeLocComment" content=""/><one:List><one:Bullet bullet="15" fontSize="11.0"/></one:List><one:T><![CDATA[]]></one:T></one:OE></one:OEChildren></one:OE><one:OE creationTime="2009-07-28T18:49:05.000Z" lastModifiedTime="2026-09-27T11:38:36.000Z" objectID="{1AA5A360-310F-487B-A4A9-2B43E7FB5CBB}{38}{B0}" alignment="left" quickStyleIndex="0"><one:Meta name="oeLocID" content="00015"/><one:Meta name="oeLocComment" content=""/><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
9style='font-weight:bold'>Discussion</span>]]></one:T><one:OEChildren><one:ChildOELayout spaceBefore="6.0" spaceAfter="18.0"/><one:OE creationTime="2009-07-28T18:49:05.000Z" lastModifiedTime="2026-09-27T11:38:36.000Z" objectID="{1AA5A360-310F-487B-A4A9-2B43E7FB5CBB}{39}{B0}" alignment="left" quickStyleIndex="0"><one:Meta name="oeLocID" content="00014"/><one:Meta name="oeLocComment" content=""/><one:List><one:Bullet bullet="15" fontSize="11.0"/></one:List><one:T><![CDATA[]]></one:T></one:OE></one:OEChildren></one:OE><one:OE creationTime="2009-07-28T18:49:05.000Z" lastModifiedTime="2026-09-27T11:38:36.000Z" objectID="{1AA5A360-310F-487B-A4A9-2B43E7FB5CBB}{43}{B0}" alignment="left" quickStyleIndex="0"><one:Meta name="oeLocID" content="00017"/><one:Meta name="oeLocComment" content=""/><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
10style='font-weight:bold'>Summary</span>]]></one:T><one:OEChildren><one:ChildOELayout spaceBefore="6.0"/><one:OE creationTime="2009-07-28T18:49:05.000Z" lastModifiedTime="2026-09-27T11:38:36.000Z" objectID="{1AA5A360-310F-487B-A4A9-2B43E7FB5CBB}{44}{B0}" alignment="left" quickStyleIndex="0"><one:Meta name="oeLocID" content="00016"/><one:Meta name="oeLocComment" content=""/><one:List><one:Bullet bullet="15" fontSize="11.0"/></one:List><one:T><![CDATA[]]></one:T></one:OE></one:OEChildren></one:OE><one:OE creationTime="2009-07-28T18:49:05.000Z" lastModifiedTime="2026-09-27T11:38:36.000Z" objectID="{1AA5A360-310F-487B-A4A9-2B43E7FB5CBB}{48}{B0}" alignment="left" quickStyleIndex="0"><one:Meta name="oeLocID" content="00018"/><one:Meta name="oeLocComment" content=""/><one:T><![CDATA[]]></one:T></one:OE><one:OE creationTime="2009-07-28T18:49:05.000Z" lastModifiedTime="2026-09-27T11:38:36.000Z" objectID="{1AA5A360-310F-487B-A4A9-2B43E7FB5CBB}{50}{B0}" alignment="left" quickStyleIndex="0"><one:Meta name="oeLocID" content="00023"/><one:Meta name="oeLocComment" content=""/><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
11style='font-weight:bold'>Next Meeting</span>]]></one:T><one:OEChildren><one:ChildOELayout spaceBefore="6.0" spaceBetween="3.0"/><one:OE creationTime="2009-07-28T18:49:05.000Z" lastModifiedTime="2026-09-27T11:38:36.000Z" objectID="{1AA5A360-310F-487B-A4A9-2B43E7FB5CBB}{51}{B0}" alignment="left" quickStyleIndex="0"><one:Meta name="oeLocID" content="00019"/><one:Meta name="oeLocComment" content=""/><one:List><one:Bullet bullet="15" fontSize="11.0"/></one:List><one:T><![CDATA[Date and Time:]]></one:T></one:OE><one:OE creationTime="2009-07-28T18:49:05.000Z" lastModifiedTime="2026-09-27T11:38:36.000Z" objectID="{1AA5A360-310F-487B-A4A9-2B43E7FB5CBB}{54}{B0}" alignment="left" quickStyleIndex="0"><one:Meta name="oeLocID" content="00020"/><one:Meta name="oeLocComment" content=""/><one:List><one:Bullet bullet="15" fontSize="11.0"/></one:List><one:T><![CDATA[Location:]]></one:T></one:OE><one:OE creationTime="2009-07-28T18:49:05.000Z" lastModifiedTime="2026-09-27T11:38:36.000Z" objectID="{1AA5A360-310F-487B-A4A9-2B43E7FB5CBB}{57}{B0}" alignment="left" quickStyleIndex="0"><one:Meta name="oeLocID" content="00021"/><one:Meta name="oeLocComment" content=""/><one:List><one:Bullet bullet="15" fontSize="11.0"/></one:List><one:T><![CDATA[Agenda:]]></one:T></one:OE><one:OE creationTime="2009-07-28T18:49:05.000Z" lastModifiedTime="2026-09-27T11:38:36.000Z" objectID="{1AA5A360-310F-487B-A4A9-2B43E7FB5CBB}{60}{B0}" alignment="left" quickStyleIndex="0"><one:Meta name="oeLocID" content="00022"/><one:Meta name="oeLocComment" content=""/><one:List><one:Bullet bullet="15" fontSize="11.0"/></one:List><one:T><![CDATA[Notes:]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:Outline></one:Page>
12
corpus/notebook-management/native/new-notebook/created/New Section 1.one created
Binary files /dev/null and b/corpus/notebook-management/native/new-notebook/created/New Section 1.one differ
corpus/notebook-management/native/new-notebook/created/New Section 2.one created
Binary files /dev/null and b/corpus/notebook-management/native/new-notebook/created/New Section 2.one differ
corpus/notebook-management/native/new-notebook/created/New Section 3.one created
Binary files /dev/null and b/corpus/notebook-management/native/new-notebook/created/New Section 3.one differ
corpus/notebook-management/native/new-notebook/created/New Section Group/Open Notebook.onetoc2 created
Binary files /dev/null and b/corpus/notebook-management/native/new-notebook/created/New Section Group/Open Notebook.onetoc2 differ
corpus/notebook-management/native/new-notebook/created/Open Notebook.onetoc2 created
Binary files /dev/null and b/corpus/notebook-management/native/new-notebook/created/Open Notebook.onetoc2 differ
corpus/notebook-management/native/new-notebook/final/New Section 1.one created
Binary files /dev/null and b/corpus/notebook-management/native/new-notebook/final/New Section 1.one differ
corpus/notebook-management/native/new-notebook/final/New Section 2.one created
Binary files /dev/null and b/corpus/notebook-management/native/new-notebook/final/New Section 2.one differ
corpus/notebook-management/native/new-notebook/final/OneNote_RecycleBin/New Section 3.one created
Binary files /dev/null and b/corpus/notebook-management/native/new-notebook/final/OneNote_RecycleBin/New Section 3.one differ
corpus/notebook-management/native/new-notebook/final/OneNote_RecycleBin/OneNote_DeletedPages.one created
Binary files /dev/null and b/corpus/notebook-management/native/new-notebook/final/OneNote_RecycleBin/OneNote_DeletedPages.one differ
corpus/notebook-management/native/new-notebook/final/OneNote_RecycleBin/Open Notebook.onetoc2 created
Binary files /dev/null and b/corpus/notebook-management/native/new-notebook/final/OneNote_RecycleBin/Open Notebook.onetoc2 differ
corpus/notebook-management/native/new-notebook/final/Open Notebook.onetoc2 created
Binary files /dev/null and b/corpus/notebook-management/native/new-notebook/final/Open Notebook.onetoc2 differ
corpus/notebook-management/native/new-notebook/moved/Kept/New Section 3.one created
Binary files /dev/null and b/corpus/notebook-management/native/new-notebook/moved/Kept/New Section 3.one differ
corpus/notebook-management/native/new-notebook/moved/Kept/Open Notebook.onetoc2 created
Binary files /dev/null and b/corpus/notebook-management/native/new-notebook/moved/Kept/Open Notebook.onetoc2 differ
corpus/notebook-management/native/new-notebook/moved/New Section 1.one created
Binary files /dev/null and b/corpus/notebook-management/native/new-notebook/moved/New Section 1.one differ
corpus/notebook-management/native/new-notebook/moved/New Section 2.one created
Binary files /dev/null and b/corpus/notebook-management/native/new-notebook/moved/New Section 2.one differ
corpus/notebook-management/native/new-notebook/moved/OneNote_RecycleBin/OneNote_DeletedPages.one created
Binary files /dev/null and b/corpus/notebook-management/native/new-notebook/moved/OneNote_RecycleBin/OneNote_DeletedPages.one differ
corpus/notebook-management/native/new-notebook/moved/OneNote_RecycleBin/Open Notebook.onetoc2 created
Binary files /dev/null and b/corpus/notebook-management/native/new-notebook/moved/OneNote_RecycleBin/Open Notebook.onetoc2 differ
corpus/notebook-management/native/new-notebook/moved/Open Notebook.onetoc2 created
Binary files /dev/null and b/corpus/notebook-management/native/new-notebook/moved/Open Notebook.onetoc2 differ
corpus/notebook-management/native/page-color/Garden.one created
Binary files /dev/null and b/corpus/notebook-management/native/page-color/Garden.one differ
corpus/notebook-management/native/page-color/colors.txt created+16
......@@ -0,0 +1,16 @@
1#EDF5FE
2#FFEEEF
3#FDFDDD
4#ECF9E5
5#E5EDF3
6#FBEDF6
7#FFFADF
8#ECF0E5
9#E9E9ED
10#F3E9FF
11#F9F4E7
12#E5EFEB
13#E8E3EB
14#EFDEDE
15#FBF2E1
16#D4F9F2
corpus/notebook-management/native/section-colors/New Section 1.one created
Binary files /dev/null and b/corpus/notebook-management/native/section-colors/New Section 1.one differ
corpus/notebook-management/native/section-colors/New Section 10.one created
Binary files /dev/null and b/corpus/notebook-management/native/section-colors/New Section 10.one differ
corpus/notebook-management/native/section-colors/New Section 11.one created
Binary files /dev/null and b/corpus/notebook-management/native/section-colors/New Section 11.one differ
corpus/notebook-management/native/section-colors/New Section 12.one created
Binary files /dev/null and b/corpus/notebook-management/native/section-colors/New Section 12.one differ
corpus/notebook-management/native/section-colors/New Section 13.one created
Binary files /dev/null and b/corpus/notebook-management/native/section-colors/New Section 13.one differ
corpus/notebook-management/native/section-colors/New Section 14.one created
Binary files /dev/null and b/corpus/notebook-management/native/section-colors/New Section 14.one differ
corpus/notebook-management/native/section-colors/New Section 15.one created
Binary files /dev/null and b/corpus/notebook-management/native/section-colors/New Section 15.one differ
corpus/notebook-management/native/section-colors/New Section 16.one created
Binary files /dev/null and b/corpus/notebook-management/native/section-colors/New Section 16.one differ
corpus/notebook-management/native/section-colors/New Section 2.one created
Binary files /dev/null and b/corpus/notebook-management/native/section-colors/New Section 2.one differ
corpus/notebook-management/native/section-colors/New Section 3.one created
Binary files /dev/null and b/corpus/notebook-management/native/section-colors/New Section 3.one differ
corpus/notebook-management/native/section-colors/New Section 4.one created
Binary files /dev/null and b/corpus/notebook-management/native/section-colors/New Section 4.one differ
corpus/notebook-management/native/section-colors/New Section 5.one created
Binary files /dev/null and b/corpus/notebook-management/native/section-colors/New Section 5.one differ
corpus/notebook-management/native/section-colors/New Section 6.one created
Binary files /dev/null and b/corpus/notebook-management/native/section-colors/New Section 6.one differ
corpus/notebook-management/native/section-colors/New Section 7.one created
Binary files /dev/null and b/corpus/notebook-management/native/section-colors/New Section 7.one differ
corpus/notebook-management/native/section-colors/New Section 8.one created
Binary files /dev/null and b/corpus/notebook-management/native/section-colors/New Section 8.one differ
corpus/notebook-management/native/section-colors/New Section 9.one created
Binary files /dev/null and b/corpus/notebook-management/native/section-colors/New Section 9.one differ
corpus/notebook-management/native/section-colors/Open Notebook.onetoc2 created
Binary files /dev/null and b/corpus/notebook-management/native/section-colors/Open Notebook.onetoc2 differ
corpus/page-lifecycle/offline-edits-series/README.md created+22
......@@ -0,0 +1,22 @@
1# Offline page batches merged as page series
2
3`../offline-edits` regenerated since page lists merge as OneNote merges page series
4(`../../conflict-page/native-pages`): a page the remote moved keeps the remote's place.
5In every native movement state OneNote gave the pages the offline batch places series of
6their own, so all eighteen keep OneNote's placement and publish the body edit alone.
7`twelve-clients` moves disjoint pages, each into a series of its own; each client's
8batch publishes whole, twelve publications, all merged.
9
10Every candidate reopened in a fresh OneNote 2010 clone without changes beyond the header,
11except two native repairs of inputs OneNote wrote: `indent-02-promoted-parent` refreshes the
12stale section metadata level that `../movement/02-promoted-parent` left (MS-ONE 2.2.81,
13note 9), and `twelve-clients` fills the seed page's absent optional metadata copy. The
14verifier accounts for both. `provenance.json` records the captures (`evidence/series`) and
15removed clones.
16
17```sh
18ONESTORE_OFFLINE_PAGE_EDIT_OUTPUT=/tmp/one-page-edits cargo test -p notebook --all-features --test sync_pages native_page_changes_reconcile_with_atomic_offline_batches -- --exact
19python tools/offline_page_edits.py /tmp/one-page-edits /tmp/one-page-edits-cold --workers 4
20ONESTORE_OFFLINE_PAGE_CLIENT_OUTPUT=/tmp/one-page-clients cargo test -p notebook --all-features --test sync_pages twelve_disjoint_page_batches_merge_with_dependent_bodies_without_review -- --exact
21python tools/native_runner.py /tmp/one-page-clients /tmp/one-page-clients-cold --expected-pages 37 --collect-notebook
22```
corpus/page-lifecycle/offline-edits-series/group-01-demoted-parent/candidate/Lifecycle.one created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/group-01-demoted-parent/candidate/Lifecycle.one differ
corpus/page-lifecycle/offline-edits-series/group-01-demoted-parent/candidate/manifest.json created+87
......@@ -0,0 +1,87 @@
1{
2 "confirmations": 0,
3 "conflict": true,
4 "mode": "group",
5 "original": [
6 {
7 "guid": [
8 201,
9 10,
10 106,
11 102,
12 142,
13 247,
14 18,
15 79,
16 177,
17 108,
18 120,
19 98,
20 206,
21 193,
22 214,
23 20
24 ],
25 "level": 1,
26 "position": {
27 "Before": null
28 },
29 "space": "{8A3D5318-2F37-02D8-0DC9-CC0BC689209F},1"
30 },
31 {
32 "guid": [
33 115,
34 33,
35 106,
36 78,
37 121,
38 140,
39 215,
40 65,
41 186,
42 48,
43 82,
44 176,
45 47,
46 20,
47 4,
48 78
49 ],
50 "level": 2,
51 "position": {
52 "Before": null
53 },
54 "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1"
55 },
56 {
57 "guid": [
58 73,
59 55,
60 27,
61 125,
62 117,
63 195,
64 180,
65 79,
66 166,
67 201,
68 36,
69 230,
70 140,
71 154,
72 66,
73 37
74 ],
75 "level": 3,
76 "position": {
77 "Before": null
78 },
79 "space": "{8A6DBA48-33BB-0681-2F02-2C73A811E8B8},1"
80 }
81 ],
82 "page_receipt": "Some(Published { revision: ExGuid { guid: [220, 211, 38, 107, 179, 97, 114, 74, 158, 104, 66, 109, 244, 125, 212, 30], n: 1 } })",
83 "phase": "01-demoted-parent",
84 "publications": 1,
85 "reviewed": [],
86 "text_receipt": "Some(Published { revision: ExGuid { guid: [220, 211, 38, 107, 179, 97, 114, 74, 158, 104, 66, 109, 244, 125, 212, 30], n: 1 } })"
87}
\ No newline at end of file
corpus/page-lifecycle/offline-edits-series/group-01-demoted-parent/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-228507E9 -ExpectedPages 9", "exit": 0, "stdout": "Read 1 sections and 9 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-lifecycle/offline-edits-series/group-01-demoted-parent/cold/machine.json created+1
......@@ -0,0 +1 @@
1{"name": "m6-228507e9", "hostname": "ONE-M6-228507E9"}
corpus/page-lifecycle/offline-edits-series/group-01-demoted-parent/cold/notebook/Lifecycle.one created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/group-01-demoted-parent/cold/notebook/Lifecycle.one differ
corpus/page-lifecycle/offline-edits-series/group-01-demoted-parent/cold/notebook/Open Notebook.onetoc2 created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/group-01-demoted-parent/cold/notebook/Open Notebook.onetoc2 differ
corpus/page-lifecycle/offline-edits-series/group-01-demoted-parent/cold/read/environment.json created+7
......@@ -0,0 +1,7 @@
1{
2 "powershell": "5.1.14409.1005",
3 "schema": "xs2010",
4 "hostname": "ONE-M6-228507E9",
5 "cold": true,
6 "onenote": "14.0.4763.1000"
7}
corpus/page-lifecycle/offline-edits-series/group-01-demoted-parent/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="{A7EB0984-5495-4A35-86EB-1C9F916514C7}{1}{B0}" path="C:\one-tests\runs\capture\notebook" lastModifiedTime="2026-09-27T15:18:10.000Z" color="#B49EDE"><one:Section name="Lifecycle" ID="{671C7076-1AEF-0256-2B09-4309826BBCBC}{1}{B0}" path="C:\one-tests\runs\capture\notebook\Lifecycle.one" lastModifiedTime="2026-09-27T15:18:10.000Z" color="#91BAAE"><one:Page ID="{87262983-556F-0A51-3E14-D3D15B219E2C}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:18:10.000Z" pageLevel="1"/><one:Page ID="{CD4B5070-C5C4-03C3-2A57-D3F0B6B15502}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:18:10.000Z" pageLevel="1"/><one:Page ID="{ED449143-CC1C-04E1-3ACA-15044D037D67}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:18:10.000Z" pageLevel="1"/><one:Page ID="{F988D83A-CAD9-41B7-87C9-5DB8F55742BF}{1}{B0}" name="Same title" dateTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-09T06:03:09.000Z" pageLevel="2"/><one:Page ID="{A404F3A9-4C9F-4BB1-B924-656CB17DD64E}{1}{B0}" name="child" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:18:10.000Z" pageLevel="2"/><one:Page ID="{F9D8316A-D655-45EE-A502-BDC09BCF8A98}{1}{B0}" name="grandchild" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:18:10.000Z" pageLevel="3"/><one:Page ID="{2A1BC347-05D9-46E3-99A5-11FA4CB867D4}{1}{B0}" name="Renamed 🦋 é" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:18:10.000Z" pageLevel="1"/><one:Page ID="{41FE39E7-3325-4CD2-A605-13A1DB81F3CE}{1}{B0}" name="Body trailing 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:18:10.000Z" pageLevel="1"/><one:Page ID="{3AB75D04-662C-4BB0-8DBF-7BA0DF48DEFF}{1}{B0}" name="Body automatic 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:18:10.000Z" pageLevel="1"/></one:Section></one:Notebook>
corpus/page-lifecycle/offline-edits-series/group-01-demoted-parent/cold/read/page-000.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="{2A1BC347-05D9-46E3-99A5-11FA4CB867D4}{1}{B0}" name="Renamed 🦋 é" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:18:10.000Z" pageLevel="1" lang="en-US"><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-09T03:09:34.000Z" lastModifiedTime="2026-09-09T03:09:34.000Z" objectID="{07E322F3-E362-4193-8FDB-F1B89AEEE2AB}{16}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Renamed &#129419; é]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{4C940959-8B5F-4D09-8A9B-6ED8398E5395}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="170.2942504882812" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{4C940959-8B5F-4D09-8A9B-6ED8398E5395}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body duplicate &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-01-demoted-parent/cold/read/page-001.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="{3AB75D04-662C-4BB0-8DBF-7BA0DF48DEFF}{1}{B0}" name="Body automatic 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:18:10.000Z" pageLevel="1" lang="en-US"><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:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{8DC9274C-CE86-4451-8F7D-A09EFC167DEC}{14}{B0}"><one:Position x="36.0" y="14.40000057220459" z="0"/><one:Size width="174.3547973632812" height="13.42771625518799"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{8DC9274C-CE86-4451-8F7D-A09EFC167DEC}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body automatic &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-01-demoted-parent/cold/read/page-002.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="{41FE39E7-3325-4CD2-A605-13A1DB81F3CE}{1}{B0}" name="Body trailing 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:18:10.000Z" pageLevel="1" lang="en-US"><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-09T03:09:34.000Z" lastModifiedTime="2026-09-09T03:09:34.000Z" objectID="{0470286A-3E68-4960-B3D4-AFA1979DE37E}{16}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{D0CF199A-1CB5-46E2-9450-7145FD061982}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="160.1752014160156" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{D0CF199A-1CB5-46E2-9450-7145FD061982}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body trailing &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-01-demoted-parent/cold/read/page-003.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{87262983-556F-0A51-3E14-D3D15B219E2C}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:18:10.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="17.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-09T03:09:19.000Z" lastModifiedTime="2026-09-09T03:09:19.000Z" objectID="{49535898-69DA-0236-1593-88E1C15212D3}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/group-01-demoted-parent/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="{A404F3A9-4C9F-4BB1-B924-656CB17DD64E}{1}{B0}" name="child" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:18:10.000Z" pageLevel="2" lang="en-US"><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-09T03:09:29.000Z" lastModifiedTime="2026-09-09T03:09:29.000Z" objectID="{2E5086DA-AEB2-4F19-9163-7A3E0AC60FEA}{28}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[child]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{2E5086DA-AEB2-4F19-9163-7A3E0AC60FEA}{35}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="149.6102294921875" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-09T03:09:29.000Z" objectID="{2E5086DA-AEB2-4F19-9163-7A3E0AC60FEA}{36}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body child &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-01-demoted-parent/cold/read/page-005.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{CD4B5070-C5C4-03C3-2A57-D3F0B6B15502}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:18:10.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="17.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-09T03:09:19.000Z" lastModifiedTime="2026-09-09T03:09:19.000Z" objectID="{E2AF95AB-6A91-0FDA-013D-AB4E9AD78B80}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/group-01-demoted-parent/cold/read/page-006.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{ED449143-CC1C-04E1-3ACA-15044D037D67}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:18:10.000Z" pageLevel="1"><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings></one:Page>
corpus/page-lifecycle/offline-edits-series/group-01-demoted-parent/cold/read/page-007.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="{F988D83A-CAD9-41B7-87C9-5DB8F55742BF}{1}{B0}" name="Same title" dateTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-09T06:03:09.000Z" pageLevel="2" lang="en-US"><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-09T03:09:27.000Z" lastModifiedTime="2026-09-09T06:03:08.000Z" objectID="{FB934140-9E7F-4B22-B5F6-97B7DBAC5C02}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-27T15:05:58.000Z" objectID="{FB934140-9E7F-4B22-B5F6-97B7DBAC5C02}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="192.0257415771484" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-27T15:05:58.000Z" objectID="{FB934140-9E7F-4B22-B5F6-97B7DBAC5C02}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Offline Body parent &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-01-demoted-parent/cold/read/page-008.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="{F9D8316A-D655-45EE-A502-BDC09BCF8A98}{1}{B0}" name="grandchild" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:18:10.000Z" pageLevel="3" lang="en-US"><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-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{690D1AD9-D76F-4641-9907-0D48B247E9D9}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[grandchild]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{690D1AD9-D76F-4641-9907-0D48B247E9D9}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="175.9715728759766" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{690D1AD9-D76F-4641-9907-0D48B247E9D9}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body grandchild &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-01-demoted-parent/cold/read/payloads.json created+3
......@@ -0,0 +1,3 @@
1[
2
3]
\ No newline at end of file
corpus/page-lifecycle/offline-edits-series/group-01-demoted-parent/cold/run.json created+18
......@@ -0,0 +1,18 @@
1{
2 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmpxbgzk4zk",
3 "expected_pages": 9,
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-lifecycle/offline-edits-series/group-01-demoted-parent/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-lifecycle/offline-edits-series/group-01-demoted-parent/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-lifecycle/offline-edits-series/group-01-demoted-parent/cold/source.json created+8
......@@ -0,0 +1,8 @@
1[
2 {
3 "path": "Lifecycle.one",
4 "bytes": 58888,
5 "sha256": "9a3b4662022dc604139192a1ce6e89e0a86fb2f4f28d612d0b21fc39cbb0321b",
6 "mtime_ns": 1790522182582306261
7 }
8]
corpus/page-lifecycle/offline-edits-series/group-01-demoted-parent/cold/teardown.json created+1
......@@ -0,0 +1 @@
1{"absent": true}
corpus/page-lifecycle/offline-edits-series/group-02-promoted-parent/candidate/Lifecycle.one created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/group-02-promoted-parent/candidate/Lifecycle.one differ
corpus/page-lifecycle/offline-edits-series/group-02-promoted-parent/candidate/manifest.json created+87
......@@ -0,0 +1,87 @@
1{
2 "confirmations": 0,
3 "conflict": true,
4 "mode": "group",
5 "original": [
6 {
7 "guid": [
8 1,
9 158,
10 214,
11 127,
12 88,
13 144,
14 125,
15 70,
16 142,
17 160,
18 108,
19 163,
20 26,
21 254,
22 139,
23 224
24 ],
25 "level": 1,
26 "position": {
27 "Before": null
28 },
29 "space": "{8A3D5318-2F37-02D8-0DC9-CC0BC689209F},1"
30 },
31 {
32 "guid": [
33 246,
34 145,
35 67,
36 226,
37 173,
38 106,
39 84,
40 66,
41 166,
42 80,
43 187,
44 112,
45 214,
46 75,
47 197,
48 145
49 ],
50 "level": 2,
51 "position": {
52 "Before": null
53 },
54 "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1"
55 },
56 {
57 "guid": [
58 208,
59 245,
60 172,
61 222,
62 94,
63 188,
64 190,
65 76,
66 137,
67 17,
68 74,
69 122,
70 80,
71 23,
72 13,
73 147
74 ],
75 "level": 3,
76 "position": {
77 "Before": null
78 },
79 "space": "{8A6DBA48-33BB-0681-2F02-2C73A811E8B8},1"
80 }
81 ],
82 "page_receipt": "Some(Published { revision: ExGuid { guid: [73, 133, 222, 97, 87, 220, 209, 73, 167, 94, 12, 96, 167, 99, 69, 216], n: 1 } })",
83 "phase": "02-promoted-parent",
84 "publications": 1,
85 "reviewed": [],
86 "text_receipt": "Some(Published { revision: ExGuid { guid: [73, 133, 222, 97, 87, 220, 209, 73, 167, 94, 12, 96, 167, 99, 69, 216], n: 1 } })"
87}
\ No newline at end of file
corpus/page-lifecycle/offline-edits-series/group-02-promoted-parent/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-59E6B833 -ExpectedPages 9", "exit": 0, "stdout": "Read 1 sections and 9 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-lifecycle/offline-edits-series/group-02-promoted-parent/cold/machine.json created+1
......@@ -0,0 +1 @@
1{"name": "m6-59e6b833", "hostname": "ONE-M6-59E6B833"}
corpus/page-lifecycle/offline-edits-series/group-02-promoted-parent/cold/notebook/Lifecycle.one created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/group-02-promoted-parent/cold/notebook/Lifecycle.one differ
corpus/page-lifecycle/offline-edits-series/group-02-promoted-parent/cold/notebook/Open Notebook.onetoc2 created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/group-02-promoted-parent/cold/notebook/Open Notebook.onetoc2 differ
corpus/page-lifecycle/offline-edits-series/group-02-promoted-parent/cold/read/environment.json created+7
......@@ -0,0 +1,7 @@
1{
2 "powershell": "5.1.14409.1005",
3 "schema": "xs2010",
4 "hostname": "ONE-M6-59E6B833",
5 "cold": true,
6 "onenote": "14.0.4763.1000"
7}
corpus/page-lifecycle/offline-edits-series/group-02-promoted-parent/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="{0634C1FF-1F87-4D65-969C-C7695BCC62A7}{1}{B0}" path="C:\one-tests\runs\capture\notebook" lastModifiedTime="2026-09-27T15:18:07.000Z" color="#B49EDE"><one:Section name="Lifecycle" ID="{9F3CE129-D1DE-02D1-224F-9EA0F59AD81E}{1}{B0}" path="C:\one-tests\runs\capture\notebook\Lifecycle.one" lastModifiedTime="2026-09-27T15:18:07.000Z" color="#91BAAE"><one:Page ID="{7F06B8DC-9E5E-0AD6-3752-0E782CD0FA8E}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:18:07.000Z" pageLevel="1"/><one:Page ID="{356BC12F-0EF5-0344-2311-0E59C14031A0}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:18:07.000Z" pageLevel="1"/><one:Page ID="{1564001C-072D-0466-338C-C8AD3AF219C5}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:18:07.000Z" pageLevel="1"/><one:Page ID="{01A84965-01E8-4130-8E8F-801182A6261D}{1}{B0}" name="Same title" dateTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-09T06:03:25.000Z" pageLevel="1"/><one:Page ID="{5C2462F6-87AE-4B36-B062-B8C5C68CB2EC}{1}{B0}" name="child" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:18:07.000Z" pageLevel="2"/><one:Page ID="{01F8A035-1D64-4569-AC44-6069EC3EEE3A}{1}{B0}" name="grandchild" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:18:07.000Z" pageLevel="3"/><one:Page ID="{D23B5218-CEE8-4664-90E3-CC533B490376}{1}{B0}" name="Renamed 🦋 é" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:18:07.000Z" pageLevel="1"/><one:Page ID="{B9DEA8B8-F814-4C55-AF43-CE08AC70976C}{1}{B0}" name="Body trailing 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:18:07.000Z" pageLevel="1"/><one:Page ID="{C297CC5B-AD1D-4B37-84F9-A609A8B9BA5D}{1}{B0}" name="Body automatic 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:18:07.000Z" pageLevel="1"/></one:Section></one:Notebook>
corpus/page-lifecycle/offline-edits-series/group-02-promoted-parent/cold/read/page-000.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="{01A84965-01E8-4130-8E8F-801182A6261D}{1}{B0}" name="Same title" dateTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-09T06:03:25.000Z" pageLevel="1" lang="en-US"><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-09T03:09:27.000Z" lastModifiedTime="2026-09-09T06:03:08.000Z" objectID="{03B3D01F-554E-4BA5-BCB0-4A1EAC5D38A0}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-27T15:05:58.000Z" objectID="{03B3D01F-554E-4BA5-BCB0-4A1EAC5D38A0}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="192.0257415771484" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-27T15:05:58.000Z" objectID="{03B3D01F-554E-4BA5-BCB0-4A1EAC5D38A0}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Offline Body parent &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-02-promoted-parent/cold/read/page-001.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="{01F8A035-1D64-4569-AC44-6069EC3EEE3A}{1}{B0}" name="grandchild" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:18:07.000Z" pageLevel="3" lang="en-US"><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-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{912D8B86-1C5E-46C6-9041-D0E1C5B68D7B}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[grandchild]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{912D8B86-1C5E-46C6-9041-D0E1C5B68D7B}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="175.9715728759766" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{912D8B86-1C5E-46C6-9041-D0E1C5B68D7B}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body grandchild &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-02-promoted-parent/cold/read/page-002.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{1564001C-072D-0466-338C-C8AD3AF219C5}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:18:07.000Z" pageLevel="1"><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings></one:Page>
corpus/page-lifecycle/offline-edits-series/group-02-promoted-parent/cold/read/page-003.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{356BC12F-0EF5-0344-2311-0E59C14031A0}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:18:07.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="17.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-09T03:09:19.000Z" lastModifiedTime="2026-09-09T03:09:19.000Z" objectID="{1A8F04F4-A1A0-0F5D-087B-76E7ED26EF22}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/group-02-promoted-parent/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="{5C2462F6-87AE-4B36-B062-B8C5C68CB2EC}{1}{B0}" name="child" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:18:07.000Z" pageLevel="2" lang="en-US"><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-09T03:09:29.000Z" lastModifiedTime="2026-09-09T03:09:29.000Z" objectID="{D6701785-6583-4F9E-9825-A7977D376B48}{28}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[child]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{D6701785-6583-4F9E-9825-A7977D376B48}{35}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="149.6102294921875" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-09T03:09:29.000Z" objectID="{D6701785-6583-4F9E-9825-A7977D376B48}{36}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body child &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-02-promoted-parent/cold/read/page-005.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{7F06B8DC-9E5E-0AD6-3752-0E782CD0FA8E}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:18:07.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="17.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-09T03:09:19.000Z" lastModifiedTime="2026-09-09T03:09:19.000Z" objectID="{B173C9C7-A2EB-02B1-1CD5-5548B6A37671}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/group-02-promoted-parent/cold/read/page-006.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="{B9DEA8B8-F814-4C55-AF43-CE08AC70976C}{1}{B0}" name="Body trailing 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:18:07.000Z" pageLevel="1" lang="en-US"><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-09T03:09:34.000Z" lastModifiedTime="2026-09-09T03:09:34.000Z" objectID="{FC50B935-F559-49E7-BA92-7208E06C87DC}{16}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{28EF88C5-D784-4665-9D16-ACEC8AF77D20}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="160.1752014160156" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{28EF88C5-D784-4665-9D16-ACEC8AF77D20}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body trailing &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-02-promoted-parent/cold/read/page-007.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="{C297CC5B-AD1D-4B37-84F9-A609A8B9BA5D}{1}{B0}" name="Body automatic 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:18:07.000Z" pageLevel="1" lang="en-US"><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:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{75E9B613-05B7-44D6-863B-7D378BE7194E}{14}{B0}"><one:Position x="36.0" y="14.40000057220459" z="0"/><one:Size width="174.3547973632812" height="13.42771625518799"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{75E9B613-05B7-44D6-863B-7D378BE7194E}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body automatic &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-02-promoted-parent/cold/read/page-008.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="{D23B5218-CEE8-4664-90E3-CC533B490376}{1}{B0}" name="Renamed 🦋 é" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:18:07.000Z" pageLevel="1" lang="en-US"><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-09T03:09:34.000Z" lastModifiedTime="2026-09-09T03:09:34.000Z" objectID="{FFC3B3AC-2853-4114-869D-2C11ED1F8609}{16}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Renamed &#129419; é]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{B4B49806-406E-4D8E-83DD-B3714E7F3737}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="170.2942504882812" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{B4B49806-406E-4D8E-83DD-B3714E7F3737}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body duplicate &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-02-promoted-parent/cold/read/payloads.json created+3
......@@ -0,0 +1,3 @@
1[
2
3]
\ No newline at end of file
corpus/page-lifecycle/offline-edits-series/group-02-promoted-parent/cold/run.json created+18
......@@ -0,0 +1,18 @@
1{
2 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmp2tw32xod",
3 "expected_pages": 9,
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-lifecycle/offline-edits-series/group-02-promoted-parent/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-lifecycle/offline-edits-series/group-02-promoted-parent/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-lifecycle/offline-edits-series/group-02-promoted-parent/cold/source.json created+8
......@@ -0,0 +1,8 @@
1[
2 {
3 "path": "Lifecycle.one",
4 "bytes": 60864,
5 "sha256": "dac0d3baff9cba15171a7a49ad5e3fe5ae4f1d9486a282f73eca7bf12a4302cf",
6 "mtime_ns": 1790522182571809194
7 }
8]
corpus/page-lifecycle/offline-edits-series/group-02-promoted-parent/cold/teardown.json created+1
......@@ -0,0 +1 @@
1{"absent": true}
corpus/page-lifecycle/offline-edits-series/group-03-selected-group-move/candidate/Lifecycle.one created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/group-03-selected-group-move/candidate/Lifecycle.one differ
corpus/page-lifecycle/offline-edits-series/group-03-selected-group-move/candidate/manifest.json created+87
......@@ -0,0 +1,87 @@
1{
2 "confirmations": 0,
3 "conflict": true,
4 "mode": "group",
5 "original": [
6 {
7 "guid": [
8 230,
9 73,
10 229,
11 66,
12 147,
13 157,
14 254,
15 73,
16 141,
17 167,
18 232,
19 94,
20 176,
21 115,
22 2,
23 69
24 ],
25 "level": 1,
26 "position": {
27 "Before": null
28 },
29 "space": "{8A3D5318-2F37-02D8-0DC9-CC0BC689209F},1"
30 },
31 {
32 "guid": [
33 161,
34 23,
35 180,
36 51,
37 0,
38 216,
39 36,
40 72,
41 157,
42 74,
43 208,
44 42,
45 195,
46 215,
47 100,
48 23
49 ],
50 "level": 2,
51 "position": {
52 "Before": null
53 },
54 "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1"
55 },
56 {
57 "guid": [
58 131,
59 50,
60 221,
61 188,
62 200,
63 84,
64 156,
65 73,
66 132,
67 49,
68 39,
69 179,
70 247,
71 214,
72 250,
73 204
74 ],
75 "level": 3,
76 "position": {
77 "Before": null
78 },
79 "space": "{8A6DBA48-33BB-0681-2F02-2C73A811E8B8},1"
80 }
81 ],
82 "page_receipt": "Some(Published { revision: ExGuid { guid: [141, 148, 26, 99, 137, 196, 192, 74, 138, 245, 125, 174, 49, 216, 252, 21], n: 1 } })",
83 "phase": "03-selected-group-move",
84 "publications": 1,
85 "reviewed": [],
86 "text_receipt": "Some(Published { revision: ExGuid { guid: [141, 148, 26, 99, 137, 196, 192, 74, 138, 245, 125, 174, 49, 216, 252, 21], n: 1 } })"
87}
\ No newline at end of file
corpus/page-lifecycle/offline-edits-series/group-03-selected-group-move/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-2F0CFD28 -ExpectedPages 9", "exit": 0, "stdout": "Read 1 sections and 9 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-lifecycle/offline-edits-series/group-03-selected-group-move/cold/machine.json created+1
......@@ -0,0 +1 @@
1{"name": "m6-2f0cfd28", "hostname": "ONE-M6-2F0CFD28"}
corpus/page-lifecycle/offline-edits-series/group-03-selected-group-move/cold/notebook/Lifecycle.one created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/group-03-selected-group-move/cold/notebook/Lifecycle.one differ
corpus/page-lifecycle/offline-edits-series/group-03-selected-group-move/cold/notebook/Open Notebook.onetoc2 created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/group-03-selected-group-move/cold/notebook/Open Notebook.onetoc2 differ
corpus/page-lifecycle/offline-edits-series/group-03-selected-group-move/cold/read/environment.json created+7
......@@ -0,0 +1,7 @@
1{
2 "powershell": "5.1.14409.1005",
3 "schema": "xs2010",
4 "hostname": "ONE-M6-2F0CFD28",
5 "cold": true,
6 "onenote": "14.0.4763.1000"
7}
corpus/page-lifecycle/offline-edits-series/group-03-selected-group-move/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="{ECCB6422-25F2-4FB2-ABBE-39B979B3E21A}{1}{B0}" path="C:\one-tests\runs\capture\notebook" lastModifiedTime="2026-09-27T15:18:07.000Z" color="#B49EDE"><one:Section name="Lifecycle" ID="{4ECC2F48-E9CA-0858-2C8F-748D9CFA7611}{1}{B0}" path="C:\one-tests\runs\capture\notebook\Lifecycle.one" lastModifiedTime="2026-09-27T15:18:07.000Z" color="#91BAAE"><one:Page ID="{AEF676BD-A64A-005F-3992-E45545B05481}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:18:06.000Z" pageLevel="1"/><one:Page ID="{E49B0F4E-36E1-09CD-2DD1-E474A8209FAF}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:18:06.000Z" pageLevel="1"/><one:Page ID="{C494CE7D-3F39-0EEF-3D4C-22805392B7CA}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:18:06.000Z" pageLevel="1"/><one:Page ID="{03CB9C79-F6FC-4CED-9E23-267E5229AD79}{1}{B0}" name="Renamed 🦋 é" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:18:06.000Z" pageLevel="1"/><one:Page ID="{682E66D9-C000-46DC-A183-2425C5103963}{1}{B0}" name="Body trailing 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:18:06.000Z" pageLevel="1"/><one:Page ID="{1367023A-9509-41BE-8A39-4C24C1D91452}{1}{B0}" name="Body automatic 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:18:06.000Z" pageLevel="1"/><one:Page ID="{D0588704-39FC-4BB9-804F-6A3CEBC68812}{1}{B0}" name="Same title" dateTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-09T06:03:25.000Z" pageLevel="1"/><one:Page ID="{8DD4AC97-BFBA-41BF-BEA2-52E8AFEC1CE3}{1}{B0}" name="child" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:18:06.000Z" pageLevel="2"/><one:Page ID="{D0086E54-2570-4FE0-A284-8A44855E4035}{1}{B0}" name="grandchild" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:18:07.000Z" pageLevel="3"/></one:Section></one:Notebook>
corpus/page-lifecycle/offline-edits-series/group-03-selected-group-move/cold/read/page-000.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="{03CB9C79-F6FC-4CED-9E23-267E5229AD79}{1}{B0}" name="Renamed 🦋 é" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:18:06.000Z" pageLevel="1" lang="en-US"><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-09T03:09:34.000Z" lastModifiedTime="2026-09-09T03:09:34.000Z" objectID="{2E337DCD-1047-4B9D-885D-C63C847F2806}{16}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Renamed &#129419; é]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{65445667-787A-4707-8D1D-595C271F9938}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="170.2942504882812" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{65445667-787A-4707-8D1D-595C271F9938}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body duplicate &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-03-selected-group-move/cold/read/page-001.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="{1367023A-9509-41BE-8A39-4C24C1D91452}{1}{B0}" name="Body automatic 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:18:06.000Z" pageLevel="1" lang="en-US"><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:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{A4197872-3DA3-4E5F-88FB-971AE287B741}{14}{B0}"><one:Position x="36.0" y="14.40000057220459" z="0"/><one:Size width="174.3547973632812" height="13.42771625518799"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{A4197872-3DA3-4E5F-88FB-971AE287B741}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body automatic &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-03-selected-group-move/cold/read/page-002.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="{682E66D9-C000-46DC-A183-2425C5103963}{1}{B0}" name="Body trailing 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:18:06.000Z" pageLevel="1" lang="en-US"><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-09T03:09:34.000Z" lastModifiedTime="2026-09-09T03:09:34.000Z" objectID="{2DA07754-CD4D-436E-B452-9825890C29D3}{16}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{F91F46A4-EF90-4CEC-93D6-46C1E397D32F}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="160.1752014160156" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{F91F46A4-EF90-4CEC-93D6-46C1E397D32F}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body trailing &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-03-selected-group-move/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="{8DD4AC97-BFBA-41BF-BEA2-52E8AFEC1CE3}{1}{B0}" name="child" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:18:06.000Z" pageLevel="2" lang="en-US"><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-09T03:09:29.000Z" lastModifiedTime="2026-09-09T03:09:29.000Z" objectID="{0780D9E4-5D97-4517-96E5-4DBA1457C547}{28}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[child]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{0780D9E4-5D97-4517-96E5-4DBA1457C547}{35}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="149.6102294921875" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-09T03:09:29.000Z" objectID="{0780D9E4-5D97-4517-96E5-4DBA1457C547}{36}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body child &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-03-selected-group-move/cold/read/page-004.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{AEF676BD-A64A-005F-3992-E45545B05481}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:18:06.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="17.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-09T03:09:19.000Z" lastModifiedTime="2026-09-09T03:09:19.000Z" objectID="{608307A6-9AFF-0838-1215-BF65DFC3D87E}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/group-03-selected-group-move/cold/read/page-005.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{C494CE7D-3F39-0EEF-3D4C-22805392B7CA}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:18:06.000Z" pageLevel="1"><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings></one:Page>
corpus/page-lifecycle/offline-edits-series/group-03-selected-group-move/cold/read/page-006.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="{D0086E54-2570-4FE0-A284-8A44855E4035}{1}{B0}" name="grandchild" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:18:07.000Z" pageLevel="3" lang="en-US"><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-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{40DD45E7-244A-4C4F-9E81-3ACCACD62374}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[grandchild]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{40DD45E7-244A-4C4F-9E81-3ACCACD62374}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="175.9715728759766" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{40DD45E7-244A-4C4F-9E81-3ACCACD62374}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body grandchild &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-03-selected-group-move/cold/read/page-007.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="{D0588704-39FC-4BB9-804F-6A3CEBC68812}{1}{B0}" name="Same title" dateTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-09T06:03:25.000Z" pageLevel="1" lang="en-US"><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-09T03:09:27.000Z" lastModifiedTime="2026-09-09T06:03:08.000Z" objectID="{D2431E7E-6D5A-412C-B270-A033C53D96AF}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-27T15:05:59.000Z" objectID="{D2431E7E-6D5A-412C-B270-A033C53D96AF}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="192.0257415771484" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-27T15:05:59.000Z" objectID="{D2431E7E-6D5A-412C-B270-A033C53D96AF}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Offline Body parent &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-03-selected-group-move/cold/read/page-008.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{E49B0F4E-36E1-09CD-2DD1-E474A8209FAF}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:18:06.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="17.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-09T03:09:19.000Z" lastModifiedTime="2026-09-09T03:09:19.000Z" objectID="{CB7FCA95-99B4-05D4-06BB-9CCA8446412D}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/group-03-selected-group-move/cold/read/payloads.json created+3
......@@ -0,0 +1,3 @@
1[
2
3]
\ No newline at end of file
corpus/page-lifecycle/offline-edits-series/group-03-selected-group-move/cold/run.json created+18
......@@ -0,0 +1,18 @@
1{
2 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmpqu8gvf97",
3 "expected_pages": 9,
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-lifecycle/offline-edits-series/group-03-selected-group-move/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-lifecycle/offline-edits-series/group-03-selected-group-move/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-lifecycle/offline-edits-series/group-03-selected-group-move/cold/source.json created+8
......@@ -0,0 +1,8 @@
1[
2 {
3 "path": "Lifecycle.one",
4 "bytes": 62448,
5 "sha256": "e8227277e0b943d76ff7f1317a204bc1c90d83edb14d57c1e4fc4b6025572d5a",
6 "mtime_ns": 1790522182601367622
7 }
8]
corpus/page-lifecycle/offline-edits-series/group-03-selected-group-move/cold/teardown.json created+1
......@@ -0,0 +1 @@
1{"absent": true}
corpus/page-lifecycle/offline-edits-series/group-04-subpage-move/candidate/Lifecycle.one created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/group-04-subpage-move/candidate/Lifecycle.one differ
corpus/page-lifecycle/offline-edits-series/group-04-subpage-move/candidate/manifest.json created+87
......@@ -0,0 +1,87 @@
1{
2 "confirmations": 0,
3 "conflict": true,
4 "mode": "group",
5 "original": [
6 {
7 "guid": [
8 78,
9 38,
10 62,
11 248,
12 116,
13 109,
14 88,
15 72,
16 144,
17 98,
18 203,
19 126,
20 141,
21 180,
22 205,
23 201
24 ],
25 "level": 1,
26 "position": {
27 "Before": null
28 },
29 "space": "{8A3D5318-2F37-02D8-0DC9-CC0BC689209F},1"
30 },
31 {
32 "guid": [
33 11,
34 136,
35 4,
36 10,
37 224,
38 67,
39 69,
40 67,
41 170,
42 135,
43 131,
44 23,
45 217,
46 9,
47 214,
48 1
49 ],
50 "level": 2,
51 "position": {
52 "Before": null
53 },
54 "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1"
55 },
56 {
57 "guid": [
58 42,
59 95,
60 98,
61 74,
62 100,
63 10,
64 90,
65 66,
66 190,
67 78,
68 156,
69 145,
70 230,
71 147,
72 236,
73 168
74 ],
75 "level": 3,
76 "position": {
77 "Before": null
78 },
79 "space": "{8A6DBA48-33BB-0681-2F02-2C73A811E8B8},1"
80 }
81 ],
82 "page_receipt": "Some(Published { revision: ExGuid { guid: [124, 112, 85, 50, 117, 173, 10, 69, 136, 197, 175, 234, 251, 205, 20, 89], n: 1 } })",
83 "phase": "04-subpage-move",
84 "publications": 1,
85 "reviewed": [],
86 "text_receipt": "Some(Published { revision: ExGuid { guid: [124, 112, 85, 50, 117, 173, 10, 69, 136, 197, 175, 234, 251, 205, 20, 89], n: 1 } })"
87}
\ No newline at end of file
corpus/page-lifecycle/offline-edits-series/group-04-subpage-move/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-1F7DB150 -ExpectedPages 9", "exit": 0, "stdout": "Read 1 sections and 9 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-lifecycle/offline-edits-series/group-04-subpage-move/cold/machine.json created+1
......@@ -0,0 +1 @@
1{"name": "m6-1f7db150", "hostname": "ONE-M6-1F7DB150"}
corpus/page-lifecycle/offline-edits-series/group-04-subpage-move/cold/notebook/Lifecycle.one created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/group-04-subpage-move/cold/notebook/Lifecycle.one differ
corpus/page-lifecycle/offline-edits-series/group-04-subpage-move/cold/notebook/Open Notebook.onetoc2 created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/group-04-subpage-move/cold/notebook/Open Notebook.onetoc2 differ
corpus/page-lifecycle/offline-edits-series/group-04-subpage-move/cold/read/environment.json created+7
......@@ -0,0 +1,7 @@
1{
2 "powershell": "5.1.14409.1005",
3 "schema": "xs2010",
4 "hostname": "ONE-M6-1F7DB150",
5 "cold": true,
6 "onenote": "14.0.4763.1000"
7}
corpus/page-lifecycle/offline-edits-series/group-04-subpage-move/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="{B5AC410F-5B34-4C45-B748-2F4496AB5C20}{1}{B0}" path="C:\one-tests\runs\capture\notebook" lastModifiedTime="2026-09-27T15:18:10.000Z" color="#B49EDE"><one:Section name="Lifecycle" ID="{BE83B8FF-BF70-0CF5-2E8F-9C603DFDC21C}{1}{B0}" path="C:\one-tests\runs\capture\notebook\Lifecycle.one" lastModifiedTime="2026-09-27T15:18:10.000Z" color="#91BAAE"><one:Page ID="{5EB9E10A-F0F0-04F2-3B92-0CB8E4B7E08C}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:18:09.000Z" pageLevel="1"/><one:Page ID="{14D498F9-605B-0D60-2FD1-0C9909272BA2}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:18:09.000Z" pageLevel="1"/><one:Page ID="{34DB59CA-6983-0A42-3F4C-CA6DF29503C7}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:18:09.000Z" pageLevel="1"/><one:Page ID="{7D9B3B20-E900-4512-BCA2-BA050EEBA8EE}{1}{B0}" name="child" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:18:09.000Z" pageLevel="1"/><one:Page ID="{F3840BCE-A046-4840-9C23-CE93F32E1974}{1}{B0}" name="Renamed 🦋 é" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:18:09.000Z" pageLevel="1"/><one:Page ID="{9861F16E-96BA-4271-A383-CCC864178D6E}{1}{B0}" name="Body trailing 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:18:09.000Z" pageLevel="1"/><one:Page ID="{E328958D-C3B3-4513-8839-A4C960DEA05F}{1}{B0}" name="Body automatic 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:18:10.000Z" pageLevel="1"/><one:Page ID="{201710B3-6F46-4F14-824F-82D14AC13C1F}{1}{B0}" name="Same title" dateTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-09T06:03:25.000Z" pageLevel="1"/><one:Page ID="{2047F9E3-73CA-4B4D-A084-62A92459F438}{1}{B0}" name="grandchild" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:18:10.000Z" pageLevel="3"/></one:Section></one:Notebook>
corpus/page-lifecycle/offline-edits-series/group-04-subpage-move/cold/read/page-000.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{14D498F9-605B-0D60-2FD1-0C9909272BA2}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:18:09.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="17.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-09T03:09:19.000Z" lastModifiedTime="2026-09-09T03:09:19.000Z" objectID="{3B305D22-CF0E-0179-04BB-74272541F520}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/group-04-subpage-move/cold/read/page-001.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="{201710B3-6F46-4F14-824F-82D14AC13C1F}{1}{B0}" name="Same title" dateTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-09T06:03:25.000Z" pageLevel="1" lang="en-US"><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-09T03:09:27.000Z" lastModifiedTime="2026-09-09T06:03:08.000Z" objectID="{220C89C9-3BE0-4581-B070-48DE643A22A2}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-27T15:05:59.000Z" objectID="{220C89C9-3BE0-4581-B070-48DE643A22A2}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="192.0257415771484" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-27T15:05:59.000Z" objectID="{220C89C9-3BE0-4581-B070-48DE643A22A2}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Offline Body parent &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-04-subpage-move/cold/read/page-002.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="{2047F9E3-73CA-4B4D-A084-62A92459F438}{1}{B0}" name="grandchild" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:18:10.000Z" pageLevel="3" lang="en-US"><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-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{B092D250-72F0-48E2-9C81-D2210DD19779}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[grandchild]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{B092D250-72F0-48E2-9C81-D2210DD19779}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="175.9715728759766" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{B092D250-72F0-48E2-9C81-D2210DD19779}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body grandchild &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-04-subpage-move/cold/read/page-003.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{34DB59CA-6983-0A42-3F4C-CA6DF29503C7}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:18:09.000Z" pageLevel="1"><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings></one:Page>
corpus/page-lifecycle/offline-edits-series/group-04-subpage-move/cold/read/page-004.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{5EB9E10A-F0F0-04F2-3B92-0CB8E4B7E08C}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:18:09.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="17.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-09T03:09:19.000Z" lastModifiedTime="2026-09-09T03:09:19.000Z" objectID="{90CC9011-CC45-0C95-1015-57887EC46C73}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/group-04-subpage-move/cold/read/page-005.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="{7D9B3B20-E900-4512-BCA2-BA050EEBA8EE}{1}{B0}" name="child" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:18:09.000Z" pageLevel="1" lang="en-US"><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-09T03:09:29.000Z" lastModifiedTime="2026-09-09T06:03:46.000Z" objectID="{F7CF4E53-0B2D-41BA-94E5-A557B550714A}{28}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[child]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T06:03:46.000Z" objectID="{F7CF4E53-0B2D-41BA-94E5-A557B550714A}{35}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="149.6102294921875" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-09T06:03:46.000Z" objectID="{F7CF4E53-0B2D-41BA-94E5-A557B550714A}{36}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body child &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-04-subpage-move/cold/read/page-006.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="{9861F16E-96BA-4271-A383-CCC864178D6E}{1}{B0}" name="Body trailing 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:18:09.000Z" pageLevel="1" lang="en-US"><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-09T03:09:34.000Z" lastModifiedTime="2026-09-09T03:09:34.000Z" objectID="{DDEFE0E3-9BF7-47C3-B652-70C8280B9DDE}{16}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{0950D113-B92A-4841-91D6-AE2C42906722}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="160.1752014160156" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{0950D113-B92A-4841-91D6-AE2C42906722}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body trailing &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-04-subpage-move/cold/read/page-007.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="{E328958D-C3B3-4513-8839-A4C960DEA05F}{1}{B0}" name="Body automatic 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:18:10.000Z" pageLevel="1" lang="en-US"><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:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{5456EFC5-6B19-4AF2-8AFB-7FF74380034C}{14}{B0}"><one:Position x="36.0" y="14.40000057220459" z="0"/><one:Size width="174.3547973632812" height="13.42771625518799"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{5456EFC5-6B19-4AF2-8AFB-7FF74380034C}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body automatic &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-04-subpage-move/cold/read/page-008.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="{F3840BCE-A046-4840-9C23-CE93F32E1974}{1}{B0}" name="Renamed 🦋 é" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:18:09.000Z" pageLevel="1" lang="en-US"><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-09T03:09:34.000Z" lastModifiedTime="2026-09-09T03:09:34.000Z" objectID="{DE7CEA7A-46FD-4F30-8A5D-2ED125789C0B}{16}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Renamed &#129419; é]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{950BC1D0-2EC0-43AA-8F1D-B1B186182D35}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="170.2942504882812" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{950BC1D0-2EC0-43AA-8F1D-B1B186182D35}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body duplicate &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-04-subpage-move/cold/read/payloads.json created+3
......@@ -0,0 +1,3 @@
1[
2
3]
\ No newline at end of file
corpus/page-lifecycle/offline-edits-series/group-04-subpage-move/cold/run.json created+18
......@@ -0,0 +1,18 @@
1{
2 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmp6no75z1i",
3 "expected_pages": 9,
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-lifecycle/offline-edits-series/group-04-subpage-move/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-lifecycle/offline-edits-series/group-04-subpage-move/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-lifecycle/offline-edits-series/group-04-subpage-move/cold/source.json created+8
......@@ -0,0 +1,8 @@
1[
2 {
3 "path": "Lifecycle.one",
4 "bytes": 65000,
5 "sha256": "44eca1c10b54a10f3b8d08487d222d94aaac3b9a28f6b6f52ffd5d0d702aaf63",
6 "mtime_ns": 1790522182581472144
7 }
8]
corpus/page-lifecycle/offline-edits-series/group-04-subpage-move/cold/teardown.json created+1
......@@ -0,0 +1 @@
1{"absent": true}
corpus/page-lifecycle/offline-edits-series/group-05-insert-before-subpage/candidate/Lifecycle.one created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/group-05-insert-before-subpage/candidate/Lifecycle.one differ
corpus/page-lifecycle/offline-edits-series/group-05-insert-before-subpage/candidate/manifest.json created+87
......@@ -0,0 +1,87 @@
1{
2 "confirmations": 0,
3 "conflict": true,
4 "mode": "group",
5 "original": [
6 {
7 "guid": [
8 14,
9 220,
10 221,
11 208,
12 175,
13 223,
14 224,
15 67,
16 190,
17 81,
18 164,
19 165,
20 98,
21 194,
22 13,
23 106
24 ],
25 "level": 1,
26 "position": {
27 "Before": null
28 },
29 "space": "{8A3D5318-2F37-02D8-0DC9-CC0BC689209F},1"
30 },
31 {
32 "guid": [
33 108,
34 13,
35 33,
36 174,
37 169,
38 6,
39 175,
40 72,
41 175,
42 126,
43 38,
44 95,
45 230,
46 228,
47 176,
48 104
49 ],
50 "level": 2,
51 "position": {
52 "Before": null
53 },
54 "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1"
55 },
56 {
57 "guid": [
58 60,
59 228,
60 133,
61 219,
62 247,
63 75,
64 15,
65 69,
66 149,
67 161,
68 85,
69 245,
70 196,
71 175,
72 27,
73 0
74 ],
75 "level": 3,
76 "position": {
77 "Before": null
78 },
79 "space": "{8A6DBA48-33BB-0681-2F02-2C73A811E8B8},1"
80 }
81 ],
82 "page_receipt": "Some(Published { revision: ExGuid { guid: [30, 166, 117, 224, 142, 251, 179, 74, 189, 198, 122, 150, 170, 50, 122, 155], n: 1 } })",
83 "phase": "05-insert-before-subpage",
84 "publications": 1,
85 "reviewed": [],
86 "text_receipt": "Some(Published { revision: ExGuid { guid: [30, 166, 117, 224, 142, 251, 179, 74, 189, 198, 122, 150, 170, 50, 122, 155], n: 1 } })"
87}
\ No newline at end of file
corpus/page-lifecycle/offline-edits-series/group-05-insert-before-subpage/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-4A72E5A4 -ExpectedPages 9", "exit": 0, "stdout": "Read 1 sections and 9 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-lifecycle/offline-edits-series/group-05-insert-before-subpage/cold/machine.json created+1
......@@ -0,0 +1 @@
1{"name": "m6-4a72e5a4", "hostname": "ONE-M6-4A72E5A4"}
corpus/page-lifecycle/offline-edits-series/group-05-insert-before-subpage/cold/notebook/Lifecycle.one created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/group-05-insert-before-subpage/cold/notebook/Lifecycle.one differ
corpus/page-lifecycle/offline-edits-series/group-05-insert-before-subpage/cold/notebook/Open Notebook.onetoc2 created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/group-05-insert-before-subpage/cold/notebook/Open Notebook.onetoc2 differ
corpus/page-lifecycle/offline-edits-series/group-05-insert-before-subpage/cold/read/environment.json created+7
......@@ -0,0 +1,7 @@
1{
2 "powershell": "5.1.14409.1005",
3 "schema": "xs2010",
4 "hostname": "ONE-M6-4A72E5A4",
5 "cold": true,
6 "onenote": "14.0.4763.1000"
7}
corpus/page-lifecycle/offline-edits-series/group-05-insert-before-subpage/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="{A0470134-8E1C-4749-BAE2-DB7D12D63F8E}{1}{B0}" path="C:\one-tests\runs\capture\notebook" lastModifiedTime="2026-09-27T15:23:18.000Z" color="#B49EDE"><one:Section name="Lifecycle" ID="{7E75B873-C6D7-0DC0-0015-806B1FBA3527}{1}{B0}" path="C:\one-tests\runs\capture\notebook\Lifecycle.one" lastModifiedTime="2026-09-27T15:23:18.000Z" color="#91BAAE"><one:Page ID="{9E4FE186-8957-05C7-1508-10B3C6F017B7}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:23:17.000Z" pageLevel="1"/><one:Page ID="{D4229875-19FC-0C55-014B-10922B60DC99}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:23:17.000Z" pageLevel="1"/><one:Page ID="{F42D5946-1024-0B77-11D6-D666D0D2F4FC}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:23:17.000Z" pageLevel="1"/><one:Page ID="{33720B42-D9E1-4975-B2B9-D298D169EE4F}{1}{B0}" name="Renamed 🦋 é" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:23:18.000Z" pageLevel="1"/><one:Page ID="{5897F1E2-EF1D-4344-8D19-D0C346507A55}{1}{B0}" name="Body trailing 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:23:18.000Z" pageLevel="1"/><one:Page ID="{23DE9501-BA14-4426-A6A3-B8C242995764}{1}{B0}" name="Body automatic 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:23:18.000Z" pageLevel="1"/><one:Page ID="{E0E1103F-16E1-4E21-ACD5-9EDA6886CB24}{1}{B0}" name="Same title" dateTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-09T06:03:25.000Z" pageLevel="1"/><one:Page ID="{BD6D3BAC-90A7-4427-9238-A60E2CAC5FD5}{1}{B0}" name="child" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:23:18.000Z" pageLevel="3"/><one:Page ID="{E0B1F96F-0A6D-4A78-8E1E-7EA2061E0303}{1}{B0}" name="grandchild" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:23:18.000Z" pageLevel="3"/></one:Section></one:Notebook>
corpus/page-lifecycle/offline-edits-series/group-05-insert-before-subpage/cold/read/page-000.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="{23DE9501-BA14-4426-A6A3-B8C242995764}{1}{B0}" name="Body automatic 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:23:18.000Z" pageLevel="1" lang="en-US"><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:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{94A0EF49-12BE-4BC7-A461-63FC61C7F477}{14}{B0}"><one:Position x="36.0" y="14.40000057220459" z="0"/><one:Size width="174.3547973632812" height="13.42771625518799"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{94A0EF49-12BE-4BC7-A461-63FC61C7F477}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body automatic &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-05-insert-before-subpage/cold/read/page-001.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="{33720B42-D9E1-4975-B2B9-D298D169EE4F}{1}{B0}" name="Renamed 🦋 é" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:23:18.000Z" pageLevel="1" lang="en-US"><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-09T03:09:34.000Z" lastModifiedTime="2026-09-09T03:09:34.000Z" objectID="{1E8AEAF6-3F5A-4E05-A4C7-32DA073F6B30}{16}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Renamed &#129419; é]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{55FDC15C-5767-429F-A187-ADBAA45FDA0E}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="170.2942504882812" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{55FDC15C-5767-429F-A187-ADBAA45FDA0E}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body duplicate &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-05-insert-before-subpage/cold/read/page-002.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="{5897F1E2-EF1D-4344-8D19-D0C346507A55}{1}{B0}" name="Body trailing 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:23:18.000Z" pageLevel="1" lang="en-US"><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-09T03:09:34.000Z" lastModifiedTime="2026-09-09T03:09:34.000Z" objectID="{1D19E06F-E250-46F6-98C8-6CC30A4C6AE5}{16}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{C9A6D19F-C08D-4974-BF4C-B22760D79019}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="160.1752014160156" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{C9A6D19F-C08D-4974-BF4C-B22760D79019}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body trailing &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-05-insert-before-subpage/cold/read/page-003.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{9E4FE186-8957-05C7-1508-10B3C6F017B7}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:23:17.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="17.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-09T03:09:19.000Z" lastModifiedTime="2026-09-09T03:09:19.000Z" objectID="{503A909D-B5E2-0DA0-3E8F-4B835C839B48}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/group-05-insert-before-subpage/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="{BD6D3BAC-90A7-4427-9238-A60E2CAC5FD5}{1}{B0}" name="child" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:23:18.000Z" pageLevel="3" lang="en-US"><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-09T03:09:29.000Z" lastModifiedTime="2026-09-09T06:03:46.000Z" objectID="{37394EDF-728A-408F-BA7F-B95C97178671}{28}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[child]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T06:03:46.000Z" objectID="{37394EDF-728A-408F-BA7F-B95C97178671}{35}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="149.6102294921875" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-09T06:03:46.000Z" objectID="{37394EDF-728A-408F-BA7F-B95C97178671}{36}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body child &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-05-insert-before-subpage/cold/read/page-005.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{D4229875-19FC-0C55-014B-10922B60DC99}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:23:17.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="17.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-09T03:09:19.000Z" lastModifiedTime="2026-09-09T03:09:19.000Z" objectID="{FBC65DAE-B6A9-004C-2A21-682C0706021B}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/group-05-insert-before-subpage/cold/read/page-006.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="{E0B1F96F-0A6D-4A78-8E1E-7EA2061E0303}{1}{B0}" name="grandchild" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:23:18.000Z" pageLevel="3" lang="en-US"><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-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{7064D2DC-0B57-49D7-B21B-CE2A2F966042}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[grandchild]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{7064D2DC-0B57-49D7-B21B-CE2A2F966042}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="175.9715728759766" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{7064D2DC-0B57-49D7-B21B-CE2A2F966042}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body grandchild &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-05-insert-before-subpage/cold/read/page-007.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="{E0E1103F-16E1-4E21-ACD5-9EDA6886CB24}{1}{B0}" name="Same title" dateTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-09T06:03:25.000Z" pageLevel="1" lang="en-US"><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-09T03:09:27.000Z" lastModifiedTime="2026-09-09T06:03:08.000Z" objectID="{E2FA8945-4247-44B4-9EEA-54D5467DD599}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-27T15:05:59.000Z" objectID="{E2FA8945-4247-44B4-9EEA-54D5467DD599}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="192.0257415771484" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-27T15:05:59.000Z" objectID="{E2FA8945-4247-44B4-9EEA-54D5467DD599}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Offline Body parent &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-05-insert-before-subpage/cold/read/page-008.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{F42D5946-1024-0B77-11D6-D666D0D2F4FC}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:23:17.000Z" pageLevel="1"><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings></one:Page>
corpus/page-lifecycle/offline-edits-series/group-05-insert-before-subpage/cold/read/payloads.json created+3
......@@ -0,0 +1,3 @@
1[
2
3]
\ No newline at end of file
corpus/page-lifecycle/offline-edits-series/group-05-insert-before-subpage/cold/run.json created+18
......@@ -0,0 +1,18 @@
1{
2 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmpy26z3j6d",
3 "expected_pages": 9,
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-lifecycle/offline-edits-series/group-05-insert-before-subpage/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-lifecycle/offline-edits-series/group-05-insert-before-subpage/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-lifecycle/offline-edits-series/group-05-insert-before-subpage/cold/source.json created+8
......@@ -0,0 +1,8 @@
1[
2 {
3 "path": "Lifecycle.one",
4 "bytes": 66944,
5 "sha256": "2f144e06946d6424cb548a4b51fdd58c2be2be35fb93ddb8f80808dce7ef8ed8",
6 "mtime_ns": 1790522182575647033
7 }
8]
corpus/page-lifecycle/offline-edits-series/group-05-insert-before-subpage/cold/teardown.json created+1
......@@ -0,0 +1 @@
1{"absent": true}
corpus/page-lifecycle/offline-edits-series/group-06-promoted-level-two/candidate/Lifecycle.one created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/group-06-promoted-level-two/candidate/Lifecycle.one differ
corpus/page-lifecycle/offline-edits-series/group-06-promoted-level-two/candidate/manifest.json created+87
......@@ -0,0 +1,87 @@
1{
2 "confirmations": 0,
3 "conflict": true,
4 "mode": "group",
5 "original": [
6 {
7 "guid": [
8 191,
9 13,
10 164,
11 227,
12 82,
13 236,
14 26,
15 68,
16 190,
17 184,
18 125,
19 92,
20 176,
21 151,
22 92,
23 109
24 ],
25 "level": 1,
26 "position": {
27 "Before": null
28 },
29 "space": "{8A3D5318-2F37-02D8-0DC9-CC0BC689209F},1"
30 },
31 {
32 "guid": [
33 56,
34 89,
35 41,
36 215,
37 48,
38 19,
39 73,
40 75,
41 153,
42 165,
43 39,
44 124,
45 235,
46 93,
47 47,
48 90
49 ],
50 "level": 2,
51 "position": {
52 "Before": null
53 },
54 "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1"
55 },
56 {
57 "guid": [
58 175,
59 208,
60 247,
61 122,
62 131,
63 58,
64 148,
65 64,
66 189,
67 66,
68 158,
69 33,
70 255,
71 61,
72 102,
73 224
74 ],
75 "level": 3,
76 "position": {
77 "Before": null
78 },
79 "space": "{8A6DBA48-33BB-0681-2F02-2C73A811E8B8},1"
80 }
81 ],
82 "page_receipt": "Some(Published { revision: ExGuid { guid: [13, 174, 2, 173, 50, 101, 29, 74, 170, 248, 125, 169, 18, 82, 231, 129], n: 1 } })",
83 "phase": "06-promoted-level-two",
84 "publications": 1,
85 "reviewed": [],
86 "text_receipt": "Some(Published { revision: ExGuid { guid: [13, 174, 2, 173, 50, 101, 29, 74, 170, 248, 125, 169, 18, 82, 231, 129], n: 1 } })"
87}
\ No newline at end of file
corpus/page-lifecycle/offline-edits-series/group-06-promoted-level-two/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-2D9428EA -ExpectedPages 9", "exit": 0, "stdout": "Read 1 sections and 9 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-lifecycle/offline-edits-series/group-06-promoted-level-two/cold/machine.json created+1
......@@ -0,0 +1 @@
1{"name": "m6-2d9428ea", "hostname": "ONE-M6-2D9428EA"}
corpus/page-lifecycle/offline-edits-series/group-06-promoted-level-two/cold/notebook/Lifecycle.one created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/group-06-promoted-level-two/cold/notebook/Lifecycle.one differ
corpus/page-lifecycle/offline-edits-series/group-06-promoted-level-two/cold/notebook/Open Notebook.onetoc2 created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/group-06-promoted-level-two/cold/notebook/Open Notebook.onetoc2 differ
corpus/page-lifecycle/offline-edits-series/group-06-promoted-level-two/cold/read/environment.json created+7
......@@ -0,0 +1,7 @@
1{
2 "powershell": "5.1.14409.1005",
3 "schema": "xs2010",
4 "hostname": "ONE-M6-2D9428EA",
5 "cold": true,
6 "onenote": "14.0.4763.1000"
7}
corpus/page-lifecycle/offline-edits-series/group-06-promoted-level-two/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="{463C34FC-40D0-4BFB-90B5-4AAE31327694}{1}{B0}" path="C:\one-tests\runs\capture\notebook" lastModifiedTime="2026-09-27T15:23:25.000Z" color="#B49EDE"><one:Section name="Lifecycle" ID="{16E68071-AA5A-0EBA-25EC-A88CDB6ED2BA}{1}{B0}" path="C:\one-tests\runs\capture\notebook\Lifecycle.one" lastModifiedTime="2026-09-27T15:23:25.000Z" color="#91BAAE"><one:Page ID="{F6DCD984-E5DA-06BD-30F1-38540224F02A}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:23:24.000Z" pageLevel="1"/><one:Page ID="{BCB1A077-7571-0F2F-24B2-3875EFB43B04}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:23:24.000Z" pageLevel="1"/><one:Page ID="{9CBE6144-7CA9-080D-342F-FE8114061361}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:23:24.000Z" pageLevel="1"/><one:Page ID="{5BE13340-B56C-4A0F-9740-FA7F15BD09D2}{1}{B0}" name="Renamed 🦋 é" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:23:24.000Z" pageLevel="1"/><one:Page ID="{3004C9E0-8390-403E-A8E0-F82482849DC8}{1}{B0}" name="Body trailing 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:23:24.000Z" pageLevel="1"/><one:Page ID="{4B4DAD03-D699-475C-835A-9025864DB0F9}{1}{B0}" name="Body automatic 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:23:24.000Z" pageLevel="1"/><one:Page ID="{8872283D-7A6C-4D5B-892C-B63DAC522CB9}{1}{B0}" name="Same title" dateTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-09T06:03:25.000Z" pageLevel="1"/><one:Page ID="{D5FE03AE-FC2A-475D-B7C1-8EE9E878B848}{1}{B0}" name="child" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-09T06:04:12.000Z" pageLevel="2"/><one:Page ID="{8822C16D-66E0-4902-ABE7-5645C2CAE49E}{1}{B0}" name="grandchild" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:23:25.000Z" pageLevel="3"/></one:Section></one:Notebook>
corpus/page-lifecycle/offline-edits-series/group-06-promoted-level-two/cold/read/page-000.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="{3004C9E0-8390-403E-A8E0-F82482849DC8}{1}{B0}" name="Body trailing 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:23:24.000Z" pageLevel="1" lang="en-US"><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-09T03:09:34.000Z" lastModifiedTime="2026-09-09T03:09:34.000Z" objectID="{758AD86D-8EDD-458C-BD31-4424CE988D78}{16}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{A135E99D-AC00-4A0E-9AB5-9AC0A4037784}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="160.1752014160156" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{A135E99D-AC00-4A0E-9AB5-9AC0A4037784}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body trailing &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-06-promoted-level-two/cold/read/page-001.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="{4B4DAD03-D699-475C-835A-9025864DB0F9}{1}{B0}" name="Body automatic 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:23:24.000Z" pageLevel="1" lang="en-US"><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:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{FC33D74B-7E33-48BD-8198-4B1BA51313EA}{14}{B0}"><one:Position x="36.0" y="14.40000057220459" z="0"/><one:Size width="174.3547973632812" height="13.42771625518799"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{FC33D74B-7E33-48BD-8198-4B1BA51313EA}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body automatic &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-06-promoted-level-two/cold/read/page-002.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="{5BE13340-B56C-4A0F-9740-FA7F15BD09D2}{1}{B0}" name="Renamed 🦋 é" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:23:24.000Z" pageLevel="1" lang="en-US"><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-09T03:09:34.000Z" lastModifiedTime="2026-09-09T03:09:34.000Z" objectID="{7619D2F4-53D7-4D7F-813E-1A3DC3EB8CAD}{16}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Renamed &#129419; é]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{3D6EF95E-3BEA-41E5-847E-855D608B3D93}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="170.2942504882812" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{3D6EF95E-3BEA-41E5-847E-855D608B3D93}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body duplicate &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-06-promoted-level-two/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="{8822C16D-66E0-4902-ABE7-5645C2CAE49E}{1}{B0}" name="grandchild" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:23:25.000Z" pageLevel="3" lang="en-US"><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-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{18F7EADE-67DA-4AAD-97E2-E6CDEB4287DF}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[grandchild]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{18F7EADE-67DA-4AAD-97E2-E6CDEB4287DF}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="175.9715728759766" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{18F7EADE-67DA-4AAD-97E2-E6CDEB4287DF}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body grandchild &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-06-promoted-level-two/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="{8872283D-7A6C-4D5B-892C-B63DAC522CB9}{1}{B0}" name="Same title" dateTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-09T06:03:25.000Z" pageLevel="1" lang="en-US"><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-09T03:09:27.000Z" lastModifiedTime="2026-09-09T06:03:08.000Z" objectID="{8A69B147-2ECA-47CE-BB13-7C3282A93204}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-27T15:05:59.000Z" objectID="{8A69B147-2ECA-47CE-BB13-7C3282A93204}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="192.0257415771484" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-27T15:05:59.000Z" objectID="{8A69B147-2ECA-47CE-BB13-7C3282A93204}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Offline Body parent &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-06-promoted-level-two/cold/read/page-005.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{9CBE6144-7CA9-080D-342F-FE8114061361}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:23:24.000Z" pageLevel="1"><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings></one:Page>
corpus/page-lifecycle/offline-edits-series/group-06-promoted-level-two/cold/read/page-006.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{BCB1A077-7571-0F2F-24B2-3875EFB43B04}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:23:24.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="17.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-09T03:09:19.000Z" lastModifiedTime="2026-09-09T03:09:19.000Z" objectID="{935565AC-DA24-0336-0FD8-40CBC3D2E586}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/group-06-promoted-level-two/cold/read/page-007.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="{D5FE03AE-FC2A-475D-B7C1-8EE9E878B848}{1}{B0}" name="child" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-09T06:04:12.000Z" pageLevel="2" lang="en-US"><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-09T03:09:29.000Z" lastModifiedTime="2026-09-09T06:03:46.000Z" objectID="{5FAA76DD-1E07-43F5-9F86-91BB53C361EC}{28}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[child]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T06:03:46.000Z" objectID="{5FAA76DD-1E07-43F5-9F86-91BB53C361EC}{35}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="149.6102294921875" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-09T06:03:46.000Z" objectID="{5FAA76DD-1E07-43F5-9F86-91BB53C361EC}{36}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body child &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-06-promoted-level-two/cold/read/page-008.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{F6DCD984-E5DA-06BD-30F1-38540224F02A}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:23:24.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="17.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-09T03:09:19.000Z" lastModifiedTime="2026-09-09T03:09:19.000Z" objectID="{38A9A89F-D96F-0EDA-1B76-636498577CD5}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/group-06-promoted-level-two/cold/read/payloads.json created+3
......@@ -0,0 +1,3 @@
1[
2
3]
\ No newline at end of file
corpus/page-lifecycle/offline-edits-series/group-06-promoted-level-two/cold/run.json created+18
......@@ -0,0 +1,18 @@
1{
2 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmp7i0tqm4j",
3 "expected_pages": 9,
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-lifecycle/offline-edits-series/group-06-promoted-level-two/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-lifecycle/offline-edits-series/group-06-promoted-level-two/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-lifecycle/offline-edits-series/group-06-promoted-level-two/cold/source.json created+8
......@@ -0,0 +1,8 @@
1[
2 {
3 "path": "Lifecycle.one",
4 "bytes": 70296,
5 "sha256": "30860c7715ac247a1f77d1d0c8c27edfcc248e719183cb7990381f5ad5230d89",
6 "mtime_ns": 1790522182588156289
7 }
8]
corpus/page-lifecycle/offline-edits-series/group-06-promoted-level-two/cold/teardown.json created+1
......@@ -0,0 +1 @@
1{"absent": true}
corpus/page-lifecycle/offline-edits-series/group-07-promoted-root/candidate/Lifecycle.one created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/group-07-promoted-root/candidate/Lifecycle.one differ
corpus/page-lifecycle/offline-edits-series/group-07-promoted-root/candidate/manifest.json created+87
......@@ -0,0 +1,87 @@
1{
2 "confirmations": 0,
3 "conflict": true,
4 "mode": "group",
5 "original": [
6 {
7 "guid": [
8 55,
9 220,
10 38,
11 71,
12 47,
13 170,
14 53,
15 66,
16 139,
17 104,
18 24,
19 238,
20 194,
21 96,
22 177,
23 2
24 ],
25 "level": 1,
26 "position": {
27 "Before": null
28 },
29 "space": "{8A3D5318-2F37-02D8-0DC9-CC0BC689209F},1"
30 },
31 {
32 "guid": [
33 140,
34 13,
35 145,
36 79,
37 63,
38 166,
39 77,
40 73,
41 158,
42 26,
43 254,
44 232,
45 198,
46 149,
47 101,
48 89
49 ],
50 "level": 2,
51 "position": {
52 "Before": null
53 },
54 "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1"
55 },
56 {
57 "guid": [
58 18,
59 181,
60 156,
61 40,
62 205,
63 204,
64 124,
65 69,
66 153,
67 67,
68 16,
69 116,
70 216,
71 205,
72 169,
73 116
74 ],
75 "level": 3,
76 "position": {
77 "Before": null
78 },
79 "space": "{8A6DBA48-33BB-0681-2F02-2C73A811E8B8},1"
80 }
81 ],
82 "page_receipt": "Some(Published { revision: ExGuid { guid: [28, 191, 204, 103, 192, 238, 143, 72, 160, 21, 202, 184, 111, 209, 202, 133], n: 1 } })",
83 "phase": "07-promoted-root",
84 "publications": 1,
85 "reviewed": [],
86 "text_receipt": "Some(Published { revision: ExGuid { guid: [28, 191, 204, 103, 192, 238, 143, 72, 160, 21, 202, 184, 111, 209, 202, 133], n: 1 } })"
87}
\ No newline at end of file
corpus/page-lifecycle/offline-edits-series/group-07-promoted-root/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-A2C6CE60 -ExpectedPages 9", "exit": 0, "stdout": "Read 1 sections and 9 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-lifecycle/offline-edits-series/group-07-promoted-root/cold/machine.json created+1
......@@ -0,0 +1 @@
1{"name": "m6-a2c6ce60", "hostname": "ONE-M6-A2C6CE60"}
corpus/page-lifecycle/offline-edits-series/group-07-promoted-root/cold/notebook/Lifecycle.one created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/group-07-promoted-root/cold/notebook/Lifecycle.one differ
corpus/page-lifecycle/offline-edits-series/group-07-promoted-root/cold/notebook/Open Notebook.onetoc2 created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/group-07-promoted-root/cold/notebook/Open Notebook.onetoc2 differ
corpus/page-lifecycle/offline-edits-series/group-07-promoted-root/cold/read/environment.json created+7
......@@ -0,0 +1,7 @@
1{
2 "powershell": "5.1.14409.1005",
3 "schema": "xs2010",
4 "hostname": "ONE-M6-A2C6CE60",
5 "cold": true,
6 "onenote": "14.0.4763.1000"
7}
corpus/page-lifecycle/offline-edits-series/group-07-promoted-root/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="{239B72F3-DF00-48CA-8DC7-6BCAD39DF6B9}{1}{B0}" path="C:\one-tests\runs\capture\notebook" lastModifiedTime="2026-09-27T15:23:27.000Z" color="#B49EDE"><one:Section name="Lifecycle" ID="{C25DD8EB-E329-0B3E-3E61-A268C0F5A77F}{1}{B0}" path="C:\one-tests\runs\capture\notebook\Lifecycle.one" lastModifiedTime="2026-09-27T15:23:27.000Z" color="#91BAAE"><one:Page ID="{2267811E-ACA9-0339-2B7C-32B019BF85EF}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:23:26.000Z" pageLevel="1"/><one:Page ID="{680AF8ED-3C02-0AAB-3F3F-3291F42F4EC1}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:23:26.000Z" pageLevel="1"/><one:Page ID="{480539DE-35DA-0D89-2FA2-F4650F9D66A4}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:23:27.000Z" pageLevel="1"/><one:Page ID="{8F5A6BDA-FC1F-4F8B-8CCD-F09B0E267C17}{1}{B0}" name="Renamed 🦋 é" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:23:27.000Z" pageLevel="1"/><one:Page ID="{E4BF917A-CAE3-45BA-B36D-F2C0991FE80D}{1}{B0}" name="Body trailing 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:23:27.000Z" pageLevel="1"/><one:Page ID="{9FF6F599-9FEA-42D8-98D7-9AC19DD6C53C}{1}{B0}" name="Body automatic 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:23:27.000Z" pageLevel="1"/><one:Page ID="{5CC970A7-331F-48DF-92A1-BCD9B7C9597C}{1}{B0}" name="Same title" dateTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-09T06:03:25.000Z" pageLevel="1"/><one:Page ID="{01455B34-B559-42D9-AC4C-840DF3E3CD8D}{1}{B0}" name="child" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-09T06:04:26.000Z" pageLevel="1"/><one:Page ID="{5C9999F7-2F93-4C86-B06A-5CA1D951915B}{1}{B0}" name="grandchild" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:23:27.000Z" pageLevel="3"/></one:Section></one:Notebook>
corpus/page-lifecycle/offline-edits-series/group-07-promoted-root/cold/read/page-000.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="{01455B34-B559-42D9-AC4C-840DF3E3CD8D}{1}{B0}" name="child" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-09T06:04:26.000Z" pageLevel="1" lang="en-US"><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-09T03:09:29.000Z" lastModifiedTime="2026-09-09T06:03:46.000Z" objectID="{8B112E47-5774-4671-840B-9B5F48581429}{28}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[child]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T06:03:46.000Z" objectID="{8B112E47-5774-4671-840B-9B5F48581429}{35}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="149.6102294921875" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-09T06:03:46.000Z" objectID="{8B112E47-5774-4671-840B-9B5F48581429}{36}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body child &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-07-promoted-root/cold/read/page-001.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{2267811E-ACA9-0339-2B7C-32B019BF85EF}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:23:26.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="17.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-09T03:09:19.000Z" lastModifiedTime="2026-09-09T03:09:19.000Z" objectID="{EC12F005-901C-0B5E-00FB-698083CC0910}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/group-07-promoted-root/cold/read/page-002.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{480539DE-35DA-0D89-2FA2-F4650F9D66A4}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:23:27.000Z" pageLevel="1"><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings></one:Page>
corpus/page-lifecycle/offline-edits-series/group-07-promoted-root/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="{5C9999F7-2F93-4C86-B06A-5CA1D951915B}{1}{B0}" name="grandchild" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:23:27.000Z" pageLevel="3" lang="en-US"><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-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{CC4CB244-2EA9-4F29-8C6F-EC29F0D9F21A}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[grandchild]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{CC4CB244-2EA9-4F29-8C6F-EC29F0D9F21A}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="175.9715728759766" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{CC4CB244-2EA9-4F29-8C6F-EC29F0D9F21A}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body grandchild &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-07-promoted-root/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="{5CC970A7-331F-48DF-92A1-BCD9B7C9597C}{1}{B0}" name="Same title" dateTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-09T06:03:25.000Z" pageLevel="1" lang="en-US"><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-09T03:09:27.000Z" lastModifiedTime="2026-09-09T06:03:08.000Z" objectID="{5ED2E9DD-67B9-424A-A09E-76D6993247C1}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-27T15:05:59.000Z" objectID="{5ED2E9DD-67B9-424A-A09E-76D6993247C1}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="192.0257415771484" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-27T15:05:59.000Z" objectID="{5ED2E9DD-67B9-424A-A09E-76D6993247C1}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Offline Body parent &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-07-promoted-root/cold/read/page-005.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{680AF8ED-3C02-0AAB-3F3F-3291F42F4EC1}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:23:26.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="17.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-09T03:09:19.000Z" lastModifiedTime="2026-09-09T03:09:19.000Z" objectID="{47EE3D36-9357-06B2-1455-4A2FD8499043}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/group-07-promoted-root/cold/read/page-006.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="{8F5A6BDA-FC1F-4F8B-8CCD-F09B0E267C17}{1}{B0}" name="Renamed 🦋 é" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:23:27.000Z" pageLevel="1" lang="en-US"><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-09T03:09:34.000Z" lastModifiedTime="2026-09-09T03:09:34.000Z" objectID="{A2A28A6E-1AA4-48FB-9AB3-10D9D870F968}{16}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Renamed &#129419; é]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{E9D5A1C4-7299-4461-9FF3-8FB97B104856}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="170.2942504882812" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{E9D5A1C4-7299-4461-9FF3-8FB97B104856}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body duplicate &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-07-promoted-root/cold/read/page-007.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="{9FF6F599-9FEA-42D8-98D7-9AC19DD6C53C}{1}{B0}" name="Body automatic 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:23:27.000Z" pageLevel="1" lang="en-US"><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:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{28888FD1-3740-4D39-9A15-41FFBE88662F}{14}{B0}"><one:Position x="36.0" y="14.40000057220459" z="0"/><one:Size width="174.3547973632812" height="13.42771625518799"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{28888FD1-3740-4D39-9A15-41FFBE88662F}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body automatic &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-07-promoted-root/cold/read/page-008.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="{E4BF917A-CAE3-45BA-B36D-F2C0991FE80D}{1}{B0}" name="Body trailing 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:23:27.000Z" pageLevel="1" lang="en-US"><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-09T03:09:34.000Z" lastModifiedTime="2026-09-09T03:09:34.000Z" objectID="{A13180F7-C7AE-4008-A6BC-4EC0D503F8BD}{16}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{758EB107-E573-4F8A-8138-9024BF980241}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="160.1752014160156" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{758EB107-E573-4F8A-8138-9024BF980241}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body trailing &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-07-promoted-root/cold/read/payloads.json created+3
......@@ -0,0 +1,3 @@
1[
2
3]
\ No newline at end of file
corpus/page-lifecycle/offline-edits-series/group-07-promoted-root/cold/run.json created+18
......@@ -0,0 +1,18 @@
1{
2 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmpfsvvpr33",
3 "expected_pages": 9,
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-lifecycle/offline-edits-series/group-07-promoted-root/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-lifecycle/offline-edits-series/group-07-promoted-root/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-lifecycle/offline-edits-series/group-07-promoted-root/cold/source.json created+8
......@@ -0,0 +1,8 @@
1[
2 {
3 "path": "Lifecycle.one",
4 "bytes": 72360,
5 "sha256": "550991e8db44ff19e287605df0548e26e03d5f4b02ea3c56b37206fd4a122974",
6 "mtime_ns": 1790522182583277710
7 }
8]
corpus/page-lifecycle/offline-edits-series/group-07-promoted-root/cold/teardown.json created+1
......@@ -0,0 +1 @@
1{"absent": true}
corpus/page-lifecycle/offline-edits-series/group-08-collapsed-group-move/candidate/Lifecycle.one created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/group-08-collapsed-group-move/candidate/Lifecycle.one differ
corpus/page-lifecycle/offline-edits-series/group-08-collapsed-group-move/candidate/manifest.json created+87
......@@ -0,0 +1,87 @@
1{
2 "confirmations": 0,
3 "conflict": true,
4 "mode": "group",
5 "original": [
6 {
7 "guid": [
8 94,
9 111,
10 203,
11 102,
12 137,
13 5,
14 1,
15 65,
16 179,
17 170,
18 125,
19 232,
20 204,
21 23,
22 163,
23 106
24 ],
25 "level": 1,
26 "position": {
27 "Before": null
28 },
29 "space": "{8A3D5318-2F37-02D8-0DC9-CC0BC689209F},1"
30 },
31 {
32 "guid": [
33 229,
34 103,
35 227,
36 76,
37 55,
38 67,
39 28,
40 66,
41 188,
42 213,
43 158,
44 204,
45 32,
46 66,
47 155,
48 181
49 ],
50 "level": 2,
51 "position": {
52 "Before": null
53 },
54 "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1"
55 },
56 {
57 "guid": [
58 71,
59 45,
60 134,
61 175,
62 49,
63 202,
64 56,
65 76,
66 130,
67 139,
68 137,
69 23,
70 7,
71 208,
72 7,
73 1
74 ],
75 "level": 3,
76 "position": {
77 "Before": null
78 },
79 "space": "{8A6DBA48-33BB-0681-2F02-2C73A811E8B8},1"
80 }
81 ],
82 "page_receipt": "Some(Published { revision: ExGuid { guid: [49, 49, 147, 226, 188, 223, 28, 78, 185, 7, 77, 190, 226, 242, 41, 152], n: 1 } })",
83 "phase": "08-collapsed-group-move",
84 "publications": 1,
85 "reviewed": [],
86 "text_receipt": "Some(Published { revision: ExGuid { guid: [49, 49, 147, 226, 188, 223, 28, 78, 185, 7, 77, 190, 226, 242, 41, 152], n: 1 } })"
87}
\ No newline at end of file
corpus/page-lifecycle/offline-edits-series/group-08-collapsed-group-move/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-150CFDA8 -ExpectedPages 9", "exit": 0, "stdout": "Read 1 sections and 9 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-lifecycle/offline-edits-series/group-08-collapsed-group-move/cold/machine.json created+1
......@@ -0,0 +1 @@
1{"name": "m6-150cfda8", "hostname": "ONE-M6-150CFDA8"}
corpus/page-lifecycle/offline-edits-series/group-08-collapsed-group-move/cold/notebook/Lifecycle.one created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/group-08-collapsed-group-move/cold/notebook/Lifecycle.one differ
corpus/page-lifecycle/offline-edits-series/group-08-collapsed-group-move/cold/notebook/Open Notebook.onetoc2 created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/group-08-collapsed-group-move/cold/notebook/Open Notebook.onetoc2 differ
corpus/page-lifecycle/offline-edits-series/group-08-collapsed-group-move/cold/read/environment.json created+7
......@@ -0,0 +1,7 @@
1{
2 "powershell": "5.1.14409.1005",
3 "schema": "xs2010",
4 "hostname": "ONE-M6-150CFDA8",
5 "cold": true,
6 "onenote": "14.0.4763.1000"
7}
corpus/page-lifecycle/offline-edits-series/group-08-collapsed-group-move/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="{56073606-2B0F-46DF-AF66-5DD443CAECDC}{1}{B0}" path="C:\one-tests\runs\capture\notebook" lastModifiedTime="2026-09-27T15:29:39.000Z" color="#B49EDE"><one:Section name="Lifecycle" ID="{03581AC1-8EB9-0311-1CB2-C3906AC7FB16}{1}{B0}" path="C:\one-tests\runs\capture\notebook\Lifecycle.one" lastModifiedTime="2026-09-27T15:29:39.000Z" color="#91BAAE"><one:Page ID="{C040991E-D8C9-4AF6-8E9F-E5F559D191E4}{1}{B0}" name="child" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-09T06:04:26.000Z" pageLevel="1"/><one:Page ID="{9D9C5BDD-4203-44A9-92B9-3D597363CD32}{1}{B0}" name="grandchild" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:29:38.000Z" pageLevel="3"/><one:Page ID="{E3624334-C139-0B16-09AF-5348B38DD986}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:29:38.000Z" pageLevel="1"/><one:Page ID="{A90F3AC7-5192-0284-1DEC-53695E1D12A8}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:29:38.000Z" pageLevel="1"/><one:Page ID="{8900FBF4-584A-05A6-0D71-959DA5AF3ACD}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:29:39.000Z" pageLevel="1"/><one:Page ID="{4E5FA9F0-918F-47A4-AE1E-9163A414207E}{1}{B0}" name="Renamed 🦋 é" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:29:39.000Z" pageLevel="1"/><one:Page ID="{25BA5350-A773-4D95-91BE-9338332DB464}{1}{B0}" name="Body trailing 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:29:39.000Z" pageLevel="1"/><one:Page ID="{5EF337B3-F27A-4AF7-BA04-FB3937E49955}{1}{B0}" name="Body automatic 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:29:39.000Z" pageLevel="1"/><one:Page ID="{9DCCB28D-5E8F-40F0-B072-DD211DFB0515}{1}{B0}" name="Same title" dateTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-09T06:03:25.000Z" pageLevel="1"/></one:Section></one:Notebook>
corpus/page-lifecycle/offline-edits-series/group-08-collapsed-group-move/cold/read/page-000.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="{25BA5350-A773-4D95-91BE-9338332DB464}{1}{B0}" name="Body trailing 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:29:39.000Z" pageLevel="1" lang="en-US"><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-09T03:09:34.000Z" lastModifiedTime="2026-09-09T03:09:34.000Z" objectID="{603442DD-AA3E-4827-846F-2F387F31A4D4}{16}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{B48B732D-88E3-47A5-A3EB-F1DC15AA5E28}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="160.1752014160156" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{B48B732D-88E3-47A5-A3EB-F1DC15AA5E28}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body trailing &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-08-collapsed-group-move/cold/read/page-001.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="{4E5FA9F0-918F-47A4-AE1E-9163A414207E}{1}{B0}" name="Renamed 🦋 é" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:29:39.000Z" pageLevel="1" lang="en-US"><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-09T03:09:34.000Z" lastModifiedTime="2026-09-09T03:09:34.000Z" objectID="{63A74844-7734-40D4-B860-71217242A501}{16}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Renamed &#129419; é]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{28D063EE-1F09-4C4E-BD20-EE41D122143F}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="170.2942504882812" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{28D063EE-1F09-4C4E-BD20-EE41D122143F}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body duplicate &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-08-collapsed-group-move/cold/read/page-002.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="{5EF337B3-F27A-4AF7-BA04-FB3937E49955}{1}{B0}" name="Body automatic 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:29:39.000Z" pageLevel="1" lang="en-US"><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:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{E98D4DFB-5AD0-4516-B8C6-200714BA3A46}{14}{B0}"><one:Position x="36.0" y="14.40000057220459" z="0"/><one:Size width="174.3547973632812" height="13.42771625518799"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{E98D4DFB-5AD0-4516-B8C6-200714BA3A46}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body automatic &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-08-collapsed-group-move/cold/read/page-003.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{8900FBF4-584A-05A6-0D71-959DA5AF3ACD}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:29:39.000Z" pageLevel="1"><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings></one:Page>
corpus/page-lifecycle/offline-edits-series/group-08-collapsed-group-move/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="{9D9C5BDD-4203-44A9-92B9-3D597363CD32}{1}{B0}" name="grandchild" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:29:38.000Z" pageLevel="3" lang="en-US"><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-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{0D49706E-4339-4706-AEBC-8DD15AEBAE73}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[grandchild]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{0D49706E-4339-4706-AEBC-8DD15AEBAE73}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="175.9715728759766" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{0D49706E-4339-4706-AEBC-8DD15AEBAE73}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body grandchild &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-08-collapsed-group-move/cold/read/page-005.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="{9DCCB28D-5E8F-40F0-B072-DD211DFB0515}{1}{B0}" name="Same title" dateTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-09T06:03:25.000Z" pageLevel="1" lang="en-US"><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-09T03:09:27.000Z" lastModifiedTime="2026-09-09T06:03:08.000Z" objectID="{9FD72BF7-0A29-4A65-824D-172E33001BA8}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-27T15:05:59.000Z" objectID="{9FD72BF7-0A29-4A65-824D-172E33001BA8}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="192.0257415771484" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-27T15:05:59.000Z" objectID="{9FD72BF7-0A29-4A65-824D-172E33001BA8}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Offline Body parent &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-08-collapsed-group-move/cold/read/page-006.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{A90F3AC7-5192-0284-1DEC-53695E1D12A8}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:29:38.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="17.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-09T03:09:19.000Z" lastModifiedTime="2026-09-09T03:09:19.000Z" objectID="{86EBFF1C-FEC7-0E9D-3686-2BD7727BCC2A}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/group-08-collapsed-group-move/cold/read/page-007.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="{C040991E-D8C9-4AF6-8E9F-E5F559D191E4}{1}{B0}" name="child" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-09T06:04:26.000Z" pageLevel="1" lang="en-US"><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-09T03:09:29.000Z" lastModifiedTime="2026-09-09T06:03:46.000Z" objectID="{4A14EC6D-3AE4-4E5E-A6D8-FAA7E26A4840}{28}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[child]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T06:03:46.000Z" objectID="{4A14EC6D-3AE4-4E5E-A6D8-FAA7E26A4840}{35}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="149.6102294921875" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-09T06:03:46.000Z" objectID="{4A14EC6D-3AE4-4E5E-A6D8-FAA7E26A4840}{36}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body child &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-08-collapsed-group-move/cold/read/page-008.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{E3624334-C139-0B16-09AF-5348B38DD986}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:29:38.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="17.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-09T03:09:19.000Z" lastModifiedTime="2026-09-09T03:09:19.000Z" objectID="{2D17322F-FD8C-0371-2228-087829FE5579}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/group-08-collapsed-group-move/cold/read/payloads.json created+3
......@@ -0,0 +1,3 @@
1[
2
3]
\ No newline at end of file
corpus/page-lifecycle/offline-edits-series/group-08-collapsed-group-move/cold/run.json created+18
......@@ -0,0 +1,18 @@
1{
2 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmpfwhuw46n",
3 "expected_pages": 9,
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-lifecycle/offline-edits-series/group-08-collapsed-group-move/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-lifecycle/offline-edits-series/group-08-collapsed-group-move/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-lifecycle/offline-edits-series/group-08-collapsed-group-move/cold/source.json created+8
......@@ -0,0 +1,8 @@
1[
2 {
3 "path": "Lifecycle.one",
4 "bytes": 73840,
5 "sha256": "b68abccdc4c7c98c65311b2924f3903540b22c7f6e0bb8153b31bbe34fdf2c05",
6 "mtime_ns": 1790522182560292804
7 }
8]
corpus/page-lifecycle/offline-edits-series/group-08-collapsed-group-move/cold/teardown.json created+1
......@@ -0,0 +1 @@
1{"absent": true}
corpus/page-lifecycle/offline-edits-series/group-single-page/candidate/Lifecycle.one created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/group-single-page/candidate/Lifecycle.one differ
corpus/page-lifecycle/offline-edits-series/group-single-page/candidate/manifest.json created+87
......@@ -0,0 +1,87 @@
1{
2 "confirmations": 0,
3 "conflict": true,
4 "mode": "group",
5 "original": [
6 {
7 "guid": [
8 106,
9 239,
10 107,
11 240,
12 178,
13 128,
14 132,
15 68,
16 153,
17 189,
18 143,
19 39,
20 201,
21 121,
22 23,
23 95
24 ],
25 "level": 1,
26 "position": {
27 "Before": null
28 },
29 "space": "{8A3D5318-2F37-02D8-0DC9-CC0BC689209F},1"
30 },
31 {
32 "guid": [
33 153,
34 239,
35 1,
36 102,
37 46,
38 96,
39 32,
40 70,
41 136,
42 164,
43 197,
44 78,
45 35,
46 85,
47 187,
48 83
49 ],
50 "level": 2,
51 "position": {
52 "Before": null
53 },
54 "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1"
55 },
56 {
57 "guid": [
58 235,
59 105,
60 29,
61 79,
62 205,
63 140,
64 16,
65 65,
66 169,
67 123,
68 14,
69 62,
70 80,
71 183,
72 253,
73 48
74 ],
75 "level": 3,
76 "position": {
77 "Before": null
78 },
79 "space": "{8A6DBA48-33BB-0681-2F02-2C73A811E8B8},1"
80 }
81 ],
82 "page_receipt": "Some(Published { revision: ExGuid { guid: [110, 9, 150, 21, 87, 116, 176, 73, 135, 91, 48, 29, 75, 28, 84, 177], n: 1 } })",
83 "phase": "single-page",
84 "publications": 1,
85 "reviewed": [],
86 "text_receipt": "Some(Published { revision: ExGuid { guid: [110, 9, 150, 21, 87, 116, 176, 73, 135, 91, 48, 29, 75, 28, 84, 177], n: 1 } })"
87}
\ No newline at end of file
corpus/page-lifecycle/offline-edits-series/group-single-page/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-93A16790 -ExpectedPages 9", "exit": 0, "stdout": "Read 1 sections and 9 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-lifecycle/offline-edits-series/group-single-page/cold/machine.json created+1
......@@ -0,0 +1 @@
1{"name": "m6-93a16790", "hostname": "ONE-M6-93A16790"}
corpus/page-lifecycle/offline-edits-series/group-single-page/cold/notebook/Lifecycle.one created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/group-single-page/cold/notebook/Lifecycle.one differ
corpus/page-lifecycle/offline-edits-series/group-single-page/cold/notebook/Open Notebook.onetoc2 created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/group-single-page/cold/notebook/Open Notebook.onetoc2 differ
corpus/page-lifecycle/offline-edits-series/group-single-page/cold/read/environment.json created+7
......@@ -0,0 +1,7 @@
1{
2 "powershell": "5.1.14409.1005",
3 "schema": "xs2010",
4 "hostname": "ONE-M6-93A16790",
5 "cold": true,
6 "onenote": "14.0.4763.1000"
7}
corpus/page-lifecycle/offline-edits-series/group-single-page/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="{2DE0A730-ADB2-4D8C-B033-844D558819C0}{1}{B0}" path="C:\one-tests\runs\capture\notebook" lastModifiedTime="2026-09-27T15:29:38.000Z" color="#B49EDE"><one:Section name="Lifecycle" ID="{AE8EB191-F430-0099-18FB-482D2784C9F1}{1}{B0}" path="C:\one-tests\runs\capture\notebook\Lifecycle.one" lastModifiedTime="2026-09-27T15:29:38.000Z" color="#91BAAE"><one:Page ID="{4EB4E864-BBB0-089E-0DE6-D8F5FECEEB61}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:29:38.000Z" pageLevel="1"/><one:Page ID="{04D99197-2B1B-010C-19A5-D8D4135E204F}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:29:38.000Z" pageLevel="1"/><one:Page ID="{24D650A4-22C3-062E-0938-1E20E8EC082A}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:29:38.000Z" pageLevel="1"/><one:Page ID="{6D96324E-A240-497E-8AD6-6E481492A303}{1}{B0}" name="child" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:29:38.000Z" pageLevel="2"/><one:Page ID="{304AF08D-388A-4721-96F0-B6E43E20FFD5}{1}{B0}" name="grandchild" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:29:38.000Z" pageLevel="3"/><one:Page ID="{E38902A0-EB06-442C-AA57-1ADEE9571299}{1}{B0}" name="Renamed 🦋 é" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:29:38.000Z" pageLevel="1"/><one:Page ID="{886CF800-DDFA-4E1D-95F7-18857E6E8683}{1}{B0}" name="Body trailing 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:29:38.000Z" pageLevel="1"/><one:Page ID="{F3259CE3-88F3-497F-BE4D-70847AA7ABB2}{1}{B0}" name="Body automatic 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:29:38.000Z" pageLevel="1"/><one:Page ID="{301A19DD-2406-4378-B43B-569C50B837F2}{1}{B0}" name="Same title" dateTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-09T05:49:01.000Z" pageLevel="1"/></one:Section></one:Notebook>
corpus/page-lifecycle/offline-edits-series/group-single-page/cold/read/page-000.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{04D99197-2B1B-010C-19A5-D8D4135E204F}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:29:38.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="17.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-09T03:09:19.000Z" lastModifiedTime="2026-09-09T03:09:19.000Z" objectID="{2B3D544C-844E-0D15-32CF-A06A3F38FECD}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/group-single-page/cold/read/page-001.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{24D650A4-22C3-062E-0938-1E20E8EC082A}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:29:38.000Z" pageLevel="1"><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings></one:Page>
corpus/page-lifecycle/offline-edits-series/group-single-page/cold/read/page-002.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="{301A19DD-2406-4378-B43B-569C50B837F2}{1}{B0}" name="Same title" dateTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-09T05:49:01.000Z" pageLevel="1" lang="en-US"><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-09T03:09:27.000Z" lastModifiedTime="2026-09-09T05:48:48.000Z" objectID="{320180A7-70A0-49ED-8604-9C937E43294F}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-27T15:06:00.000Z" objectID="{320180A7-70A0-49ED-8604-9C937E43294F}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="192.0257415771484" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-27T15:06:00.000Z" objectID="{320180A7-70A0-49ED-8604-9C937E43294F}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Offline Body parent &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-single-page/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="{304AF08D-388A-4721-96F0-B6E43E20FFD5}{1}{B0}" name="grandchild" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:29:38.000Z" pageLevel="3" lang="en-US"><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-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{A09FDB3E-39B0-448E-AAF5-066C17A89C94}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[grandchild]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{A09FDB3E-39B0-448E-AAF5-066C17A89C94}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="175.9715728759766" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{A09FDB3E-39B0-448E-AAF5-066C17A89C94}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body grandchild &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-single-page/cold/read/page-004.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{4EB4E864-BBB0-089E-0DE6-D8F5FECEEB61}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:29:38.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="17.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-09T03:09:19.000Z" lastModifiedTime="2026-09-09T03:09:19.000Z" objectID="{80C1997F-8705-00F9-2661-83C564BD679E}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/group-single-page/cold/read/page-005.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="{6D96324E-A240-497E-8AD6-6E481492A303}{1}{B0}" name="child" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:29:38.000Z" pageLevel="2" lang="en-US"><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-09T03:09:29.000Z" lastModifiedTime="2026-09-09T03:09:29.000Z" objectID="{E7C2473D-406D-4DD6-A291-711AAF297AA7}{28}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[child]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{E7C2473D-406D-4DD6-A291-711AAF297AA7}{35}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="149.6102294921875" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-09T03:09:29.000Z" objectID="{E7C2473D-406D-4DD6-A291-711AAF297AA7}{36}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body child &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-single-page/cold/read/page-006.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="{886CF800-DDFA-4E1D-95F7-18857E6E8683}{1}{B0}" name="Body trailing 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:29:38.000Z" pageLevel="1" lang="en-US"><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-09T03:09:34.000Z" lastModifiedTime="2026-09-09T03:09:34.000Z" objectID="{CDE2E98D-D0B7-4BAF-8026-A48532729633}{16}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{195DD87D-F26A-442D-A7A2-7A6158E96CCF}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="160.1752014160156" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{195DD87D-F26A-442D-A7A2-7A6158E96CCF}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body trailing &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-single-page/cold/read/page-007.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="{E38902A0-EB06-442C-AA57-1ADEE9571299}{1}{B0}" name="Renamed 🦋 é" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:29:38.000Z" pageLevel="1" lang="en-US"><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-09T03:09:34.000Z" lastModifiedTime="2026-09-09T03:09:34.000Z" objectID="{CE71E314-0DBD-435C-BC29-FA9C3F0197E6}{16}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Renamed &#129419; é]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{8506C8BE-6580-4FC6-B969-65FC9C6126D8}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="170.2942504882812" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{8506C8BE-6580-4FC6-B969-65FC9C6126D8}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body duplicate &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-single-page/cold/read/page-008.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="{F3259CE3-88F3-497F-BE4D-70847AA7ABB2}{1}{B0}" name="Body automatic 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:29:38.000Z" pageLevel="1" lang="en-US"><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:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{445BE6AB-2059-469E-BC8F-ABBA59F908A1}{14}{B0}"><one:Position x="36.0" y="14.40000057220459" z="0"/><one:Size width="174.3547973632812" height="13.42771625518799"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{445BE6AB-2059-469E-BC8F-ABBA59F908A1}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body automatic &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/group-single-page/cold/read/payloads.json created+3
......@@ -0,0 +1,3 @@
1[
2
3]
\ No newline at end of file
corpus/page-lifecycle/offline-edits-series/group-single-page/cold/run.json created+18
......@@ -0,0 +1,18 @@
1{
2 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmp3_04860j",
3 "expected_pages": 9,
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-lifecycle/offline-edits-series/group-single-page/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-lifecycle/offline-edits-series/group-single-page/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-lifecycle/offline-edits-series/group-single-page/cold/source.json created+8
......@@ -0,0 +1,8 @@
1[
2 {
3 "path": "Lifecycle.one",
4 "bytes": 63080,
5 "sha256": "58f87ab34c5e56426faed56429ab10a15e3df0673851e8c9b4587cb107a13295",
6 "mtime_ns": 1790522182573126515
7 }
8]
corpus/page-lifecycle/offline-edits-series/group-single-page/cold/teardown.json created+1
......@@ -0,0 +1 @@
1{"absent": true}
corpus/page-lifecycle/offline-edits-series/indent-01-demoted-parent/candidate/Lifecycle.one created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/indent-01-demoted-parent/candidate/Lifecycle.one differ
corpus/page-lifecycle/offline-edits-series/indent-01-demoted-parent/candidate/manifest.json created+35
......@@ -0,0 +1,35 @@
1{
2 "confirmations": 0,
3 "conflict": true,
4 "mode": "indent",
5 "original": [
6 {
7 "guid": [
8 0,
9 239,
10 121,
11 46,
12 116,
13 217,
14 98,
15 67,
16 148,
17 55,
18 113,
19 147,
20 21,
21 237,
22 19,
23 130
24 ],
25 "level": 3,
26 "position": "Keep",
27 "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1"
28 }
29 ],
30 "page_receipt": "Some(Published { revision: ExGuid { guid: [56, 236, 133, 176, 92, 155, 147, 69, 157, 167, 5, 193, 82, 10, 39, 239], n: 1 } })",
31 "phase": "01-demoted-parent",
32 "publications": 1,
33 "reviewed": [],
34 "text_receipt": "Some(Published { revision: ExGuid { guid: [56, 236, 133, 176, 92, 155, 147, 69, 157, 167, 5, 193, 82, 10, 39, 239], n: 1 } })"
35}
\ No newline at end of file
corpus/page-lifecycle/offline-edits-series/indent-01-demoted-parent/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-2B44159D -ExpectedPages 9", "exit": 0, "stdout": "Read 1 sections and 9 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-lifecycle/offline-edits-series/indent-01-demoted-parent/cold/machine.json created+1
......@@ -0,0 +1 @@
1{"name": "m6-2b44159d", "hostname": "ONE-M6-2B44159D"}
corpus/page-lifecycle/offline-edits-series/indent-01-demoted-parent/cold/notebook/Lifecycle.one created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/indent-01-demoted-parent/cold/notebook/Lifecycle.one differ
corpus/page-lifecycle/offline-edits-series/indent-01-demoted-parent/cold/notebook/Open Notebook.onetoc2 created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/indent-01-demoted-parent/cold/notebook/Open Notebook.onetoc2 differ
corpus/page-lifecycle/offline-edits-series/indent-01-demoted-parent/cold/read/environment.json created+7
......@@ -0,0 +1,7 @@
1{
2 "powershell": "5.1.14409.1005",
3 "schema": "xs2010",
4 "hostname": "ONE-M6-2B44159D",
5 "cold": true,
6 "onenote": "14.0.4763.1000"
7}
corpus/page-lifecycle/offline-edits-series/indent-01-demoted-parent/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="{5DAE6DBA-F815-4E5D-B9AB-9D88A3E17D9A}{1}{B0}" path="C:\one-tests\runs\capture\notebook" lastModifiedTime="2026-09-27T15:29:43.000Z" color="#B49EDE"><one:Section name="Lifecycle" ID="{A089048E-F16F-0AF0-3540-CCCB4CC500D9}{1}{B0}" path="C:\one-tests\runs\capture\notebook\Lifecycle.one" lastModifiedTime="2026-09-27T15:29:43.000Z" color="#91BAAE"><one:Page ID="{40B35D7B-BEEF-02F7-205D-5C13958F2249}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:29:43.000Z" pageLevel="1"/><one:Page ID="{0ADE2488-2E44-0B65-341E-5C32781FE967}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:29:43.000Z" pageLevel="1"/><one:Page ID="{2AD1E5BB-279C-0C47-2483-9AC683ADC102}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:29:43.000Z" pageLevel="1"/><one:Page ID="{3E1DACC2-2159-4911-9980-D27A3BF9FEDA}{1}{B0}" name="Same title" dateTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-09T06:03:09.000Z" pageLevel="2"/><one:Page ID="{63918751-A71F-4317-A76D-EAAE7FD36A2B}{1}{B0}" name="child" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:29:43.000Z" pageLevel="2"/><one:Page ID="{3E4D4592-3DD5-4D48-BB4B-3202556136FD}{1}{B0}" name="grandchild" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:29:43.000Z" pageLevel="3"/><one:Page ID="{ED8EB7BF-EE59-4E45-87EC-9E388216DBB1}{1}{B0}" name="Renamed 🦋 é" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:29:43.000Z" pageLevel="1"/><one:Page ID="{866B4D1F-D8A5-4474-B84C-9C63152F4FAB}{1}{B0}" name="Body trailing 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:29:43.000Z" pageLevel="1"/><one:Page ID="{FD2229FC-8DAC-4316-93F6-F46211E6629A}{1}{B0}" name="Body automatic 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:29:43.000Z" pageLevel="1"/></one:Section></one:Notebook>
corpus/page-lifecycle/offline-edits-series/indent-01-demoted-parent/cold/read/page-000.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{0ADE2488-2E44-0B65-341E-5C32781FE967}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:29:43.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="17.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-09T03:09:19.000Z" lastModifiedTime="2026-09-09T03:09:19.000Z" objectID="{253AE153-8111-077C-1F74-248C547937E5}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-01-demoted-parent/cold/read/page-001.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{2AD1E5BB-279C-0C47-2483-9AC683ADC102}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:29:43.000Z" pageLevel="1"><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-01-demoted-parent/cold/read/page-002.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="{3E1DACC2-2159-4911-9980-D27A3BF9FEDA}{1}{B0}" name="Same title" dateTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-09T06:03:09.000Z" pageLevel="2" lang="en-US"><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-09T03:09:27.000Z" lastModifiedTime="2026-09-09T06:03:08.000Z" objectID="{3C0635B8-75FF-4384-ABBF-18751502E067}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-27T15:05:57.000Z" objectID="{3C0635B8-75FF-4384-ABBF-18751502E067}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="192.0257415771484" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-27T15:05:57.000Z" objectID="{3C0635B8-75FF-4384-ABBF-18751502E067}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Offline Body parent &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-01-demoted-parent/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="{3E4D4592-3DD5-4D48-BB4B-3202556136FD}{1}{B0}" name="grandchild" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:29:43.000Z" pageLevel="3" lang="en-US"><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-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{AE986E21-3CEF-4EE7-874E-828A7CE955BC}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[grandchild]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{AE986E21-3CEF-4EE7-874E-828A7CE955BC}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="175.9715728759766" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{AE986E21-3CEF-4EE7-874E-828A7CE955BC}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body grandchild &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-01-demoted-parent/cold/read/page-004.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{40B35D7B-BEEF-02F7-205D-5C13958F2249}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:29:43.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="17.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-09T03:09:19.000Z" lastModifiedTime="2026-09-09T03:09:19.000Z" objectID="{8EC62C60-825A-0A90-0BDA-07230FFCAEB6}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-01-demoted-parent/cold/read/page-005.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="{63918751-A71F-4317-A76D-EAAE7FD36A2B}{1}{B0}" name="child" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:29:43.000Z" pageLevel="2" lang="en-US"><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-09T03:09:29.000Z" lastModifiedTime="2026-09-09T03:09:29.000Z" objectID="{E9C5F222-4532-47BF-8F2A-F5FCC468B38F}{28}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[child]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{E9C5F222-4532-47BF-8F2A-F5FCC468B38F}{35}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="149.6102294921875" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-09T03:09:29.000Z" objectID="{E9C5F222-4532-47BF-8F2A-F5FCC468B38F}{36}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body child &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-01-demoted-parent/cold/read/page-006.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="{866B4D1F-D8A5-4474-B84C-9C63152F4FAB}{1}{B0}" name="Body trailing 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:29:43.000Z" pageLevel="1" lang="en-US"><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-09T03:09:34.000Z" lastModifiedTime="2026-09-09T03:09:34.000Z" objectID="{C3E55C92-D5E8-41C6-AD9D-206359335F1B}{16}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{175A6D62-F735-4E44-8A19-FE8733A8A5E7}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="160.1752014160156" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{175A6D62-F735-4E44-8A19-FE8733A8A5E7}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body trailing &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-01-demoted-parent/cold/read/page-007.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="{ED8EB7BF-EE59-4E45-87EC-9E388216DBB1}{1}{B0}" name="Renamed 🦋 é" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:29:43.000Z" pageLevel="1" lang="en-US"><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-09T03:09:34.000Z" lastModifiedTime="2026-09-09T03:09:34.000Z" objectID="{C076560B-08E2-4935-9192-7E7A54405ECE}{16}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Renamed &#129419; é]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{8B017DA1-60DF-45AF-94D2-E11AF720EFF0}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="170.2942504882812" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{8B017DA1-60DF-45AF-94D2-E11AF720EFF0}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body duplicate &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-01-demoted-parent/cold/read/page-008.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="{FD2229FC-8DAC-4316-93F6-F46211E6629A}{1}{B0}" name="Body automatic 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:29:43.000Z" pageLevel="1" lang="en-US"><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:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{4A5C53B4-2506-4CF7-9134-2F5C32B8C189}{14}{B0}"><one:Position x="36.0" y="14.40000057220459" z="0"/><one:Size width="174.3547973632812" height="13.42771625518799"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{4A5C53B4-2506-4CF7-9134-2F5C32B8C189}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body automatic &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-01-demoted-parent/cold/read/payloads.json created+3
......@@ -0,0 +1,3 @@
1[
2
3]
\ No newline at end of file
corpus/page-lifecycle/offline-edits-series/indent-01-demoted-parent/cold/run.json created+18
......@@ -0,0 +1,18 @@
1{
2 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmppgtomrlh",
3 "expected_pages": 9,
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-lifecycle/offline-edits-series/indent-01-demoted-parent/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-lifecycle/offline-edits-series/indent-01-demoted-parent/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-lifecycle/offline-edits-series/indent-01-demoted-parent/cold/source.json created+8
......@@ -0,0 +1,8 @@
1[
2 {
3 "path": "Lifecycle.one",
4 "bytes": 58888,
5 "sha256": "c19272d0b0a52889647b23a6eb10381e7d90d5d5d7ca2ad3be868aa585a8b21c",
6 "mtime_ns": 1790522182595778175
7 }
8]
corpus/page-lifecycle/offline-edits-series/indent-01-demoted-parent/cold/teardown.json created+1
......@@ -0,0 +1 @@
1{"absent": true}
corpus/page-lifecycle/offline-edits-series/indent-02-promoted-parent/candidate/Lifecycle.one created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/indent-02-promoted-parent/candidate/Lifecycle.one differ
corpus/page-lifecycle/offline-edits-series/indent-02-promoted-parent/candidate/manifest.json created+35
......@@ -0,0 +1,35 @@
1{
2 "confirmations": 0,
3 "conflict": true,
4 "mode": "indent",
5 "original": [
6 {
7 "guid": [
8 70,
9 179,
10 162,
11 143,
12 72,
13 227,
14 248,
15 64,
16 159,
17 7,
18 0,
19 166,
20 131,
21 166,
22 211,
23 72
24 ],
25 "level": 3,
26 "position": "Keep",
27 "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1"
28 }
29 ],
30 "page_receipt": "Some(Published { revision: ExGuid { guid: [144, 208, 130, 2, 184, 145, 30, 67, 154, 106, 180, 175, 85, 128, 40, 126], n: 1 } })",
31 "phase": "02-promoted-parent",
32 "publications": 1,
33 "reviewed": [],
34 "text_receipt": "Some(Published { revision: ExGuid { guid: [144, 208, 130, 2, 184, 145, 30, 67, 154, 106, 180, 175, 85, 128, 40, 126], n: 1 } })"
35}
\ No newline at end of file
corpus/page-lifecycle/offline-edits-series/indent-02-promoted-parent/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-3F9D5E9E -ExpectedPages 9", "exit": 0, "stdout": "Read 1 sections and 9 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-lifecycle/offline-edits-series/indent-02-promoted-parent/cold/machine.json created+1
......@@ -0,0 +1 @@
1{"name": "m6-3f9d5e9e", "hostname": "ONE-M6-3F9D5E9E"}
corpus/page-lifecycle/offline-edits-series/indent-02-promoted-parent/cold/notebook/Lifecycle.one created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/indent-02-promoted-parent/cold/notebook/Lifecycle.one differ
corpus/page-lifecycle/offline-edits-series/indent-02-promoted-parent/cold/notebook/Open Notebook.onetoc2 created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/indent-02-promoted-parent/cold/notebook/Open Notebook.onetoc2 differ
corpus/page-lifecycle/offline-edits-series/indent-02-promoted-parent/cold/read/environment.json created+7
......@@ -0,0 +1,7 @@
1{
2 "powershell": "5.1.14409.1005",
3 "schema": "xs2010",
4 "hostname": "ONE-M6-3F9D5E9E",
5 "cold": true,
6 "onenote": "14.0.4763.1000"
7}
corpus/page-lifecycle/offline-edits-series/indent-02-promoted-parent/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="{BBFBFF0F-1931-4CB4-9C93-248C9B2E5A1E}{1}{B0}" path="C:\one-tests\runs\capture\notebook" lastModifiedTime="2026-09-27T15:29:50.000Z" color="#B49EDE"><one:Section name="Lifecycle" ID="{CC2CF2F9-D267-0197-1BF6-D6470B7E5A6C}{1}{B0}" path="C:\one-tests\runs\capture\notebook\Lifecycle.one" lastModifiedTime="2026-09-27T15:29:50.000Z" color="#91BAAE"><one:Page ID="{2C16AB0C-9DE7-0990-0EEB-469FD23478FC}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:29:40.000Z" pageLevel="1"/><one:Page ID="{667BD2FF-0D4C-0002-1AA8-46BE3FA4B3D2}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:29:40.000Z" pageLevel="1"/><one:Page ID="{467413CC-0494-0720-0A35-804AC4169BB7}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:29:40.000Z" pageLevel="1"/><one:Page ID="{52B85AB5-0251-4276-B736-C8F67C42A46F}{1}{B0}" name="Same title" dateTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-09T06:03:25.000Z" pageLevel="1"/><one:Page ID="{0F347126-8417-4870-89DB-F0223868309E}{1}{B0}" name="child" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:29:40.000Z" pageLevel="2"/><one:Page ID="{52E8B3E5-1EDD-462F-95FD-288E12DA6C48}{1}{B0}" name="grandchild" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:29:40.000Z" pageLevel="3"/><one:Page ID="{812B41C8-CD51-4522-A95A-84B4C5AD8104}{1}{B0}" name="Renamed 🦋 é" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:29:40.000Z" pageLevel="1"/><one:Page ID="{EACEBB68-FBAD-4F13-96FA-86EF5294151E}{1}{B0}" name="Body trailing 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:29:40.000Z" pageLevel="1"/><one:Page ID="{9187DF8B-AEA4-4871-BD40-EEEE565D382F}{1}{B0}" name="Body automatic 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:29:40.000Z" pageLevel="1"/></one:Section></one:Notebook>
corpus/page-lifecycle/offline-edits-series/indent-02-promoted-parent/cold/read/page-000.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="{0F347126-8417-4870-89DB-F0223868309E}{1}{B0}" name="child" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:29:40.000Z" pageLevel="2" lang="en-US"><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-09T03:09:29.000Z" lastModifiedTime="2026-09-09T03:09:29.000Z" objectID="{85600455-663A-4CD8-A19C-EF7083D3E93A}{28}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[child]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{85600455-663A-4CD8-A19C-EF7083D3E93A}{35}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="149.6102294921875" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-09T03:09:29.000Z" objectID="{85600455-663A-4CD8-A19C-EF7083D3E93A}{36}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body child &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-02-promoted-parent/cold/read/page-001.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{2C16AB0C-9DE7-0990-0EEB-469FD23478FC}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:29:40.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="17.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-09T03:09:19.000Z" lastModifiedTime="2026-09-09T03:09:19.000Z" objectID="{E263DA17-A152-01F7-256C-1DAF4847F403}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-02-promoted-parent/cold/read/page-002.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{467413CC-0494-0720-0A35-804AC4169BB7}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:29:40.000Z" pageLevel="1"><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-02-promoted-parent/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="{52B85AB5-0251-4276-B736-C8F67C42A46F}{1}{B0}" name="Same title" dateTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-09T06:03:25.000Z" pageLevel="1" lang="en-US"><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-09T03:09:27.000Z" lastModifiedTime="2026-09-09T06:03:08.000Z" objectID="{50A3C3CF-56F7-48E3-8509-02F952B9BAD2}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-27T15:05:57.000Z" objectID="{50A3C3CF-56F7-48E3-8509-02F952B9BAD2}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="192.0257415771484" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-27T15:05:57.000Z" objectID="{50A3C3CF-56F7-48E3-8509-02F952B9BAD2}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Offline Body parent &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-02-promoted-parent/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="{52E8B3E5-1EDD-462F-95FD-288E12DA6C48}{1}{B0}" name="grandchild" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:29:40.000Z" pageLevel="3" lang="en-US"><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-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{C23D9856-1FE7-4580-A9F8-98063B520F09}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[grandchild]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{C23D9856-1FE7-4580-A9F8-98063B520F09}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="175.9715728759766" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{C23D9856-1FE7-4580-A9F8-98063B520F09}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body grandchild &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-02-promoted-parent/cold/read/page-005.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{667BD2FF-0D4C-0002-1AA8-46BE3FA4B3D2}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:29:40.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="17.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-09T03:09:19.000Z" lastModifiedTime="2026-09-09T03:09:19.000Z" objectID="{499F1724-A219-0C1B-31C2-3E0013C26D50}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-02-promoted-parent/cold/read/page-006.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="{812B41C8-CD51-4522-A95A-84B4C5AD8104}{1}{B0}" name="Renamed 🦋 é" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:29:40.000Z" pageLevel="1" lang="en-US"><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-09T03:09:34.000Z" lastModifiedTime="2026-09-09T03:09:34.000Z" objectID="{ACD3A07C-2BEA-4252-BF24-64F613FB047B}{16}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Renamed &#129419; é]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{E7A48BD6-43D7-4EC8-BA64-FB96B09BB545}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="170.2942504882812" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{E7A48BD6-43D7-4EC8-BA64-FB96B09BB545}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body duplicate &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-02-promoted-parent/cold/read/page-007.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="{9187DF8B-AEA4-4871-BD40-EEEE565D382F}{1}{B0}" name="Body automatic 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:29:40.000Z" pageLevel="1" lang="en-US"><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:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{26F9A5C3-060E-4790-BF82-35D075039B3C}{14}{B0}"><one:Position x="36.0" y="14.40000057220459" z="0"/><one:Size width="174.3547973632812" height="13.42771625518799"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{26F9A5C3-060E-4790-BF82-35D075039B3C}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body automatic &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-02-promoted-parent/cold/read/page-008.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="{EACEBB68-FBAD-4F13-96FA-86EF5294151E}{1}{B0}" name="Body trailing 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:29:40.000Z" pageLevel="1" lang="en-US"><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-09T03:09:34.000Z" lastModifiedTime="2026-09-09T03:09:34.000Z" objectID="{AF40AAE5-F6E0-4AA1-832B-3AEF1E8805AE}{16}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{7BFF9B15-D43D-4523-A4AF-E40B7413FF52}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="160.1752014160156" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{7BFF9B15-D43D-4523-A4AF-E40B7413FF52}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body trailing &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-02-promoted-parent/cold/read/payloads.json created+3
......@@ -0,0 +1,3 @@
1[
2
3]
\ No newline at end of file
corpus/page-lifecycle/offline-edits-series/indent-02-promoted-parent/cold/run.json created+18
......@@ -0,0 +1,18 @@
1{
2 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmpsa22lkkc",
3 "expected_pages": 9,
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-lifecycle/offline-edits-series/indent-02-promoted-parent/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-lifecycle/offline-edits-series/indent-02-promoted-parent/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-lifecycle/offline-edits-series/indent-02-promoted-parent/cold/source.json created+8
......@@ -0,0 +1,8 @@
1[
2 {
3 "path": "Lifecycle.one",
4 "bytes": 60864,
5 "sha256": "02983cdd10e8f6ac52dfdd27ef63858d4d3351c2c78822c0f5c20794298fb0ca",
6 "mtime_ns": 1790522182572487438
7 }
8]
corpus/page-lifecycle/offline-edits-series/indent-02-promoted-parent/cold/teardown.json created+1
......@@ -0,0 +1 @@
1{"absent": true}
corpus/page-lifecycle/offline-edits-series/indent-03-selected-group-move/candidate/Lifecycle.one created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/indent-03-selected-group-move/candidate/Lifecycle.one differ
corpus/page-lifecycle/offline-edits-series/indent-03-selected-group-move/candidate/manifest.json created+35
......@@ -0,0 +1,35 @@
1{
2 "confirmations": 0,
3 "conflict": true,
4 "mode": "indent",
5 "original": [
6 {
7 "guid": [
8 206,
9 208,
10 7,
11 135,
12 27,
13 66,
14 90,
15 66,
16 171,
17 221,
18 251,
19 160,
20 36,
21 192,
22 100,
23 24
24 ],
25 "level": 3,
26 "position": "Keep",
27 "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1"
28 }
29 ],
30 "page_receipt": "Some(Published { revision: ExGuid { guid: [226, 195, 144, 213, 163, 25, 255, 79, 131, 63, 105, 93, 194, 6, 124, 135], n: 1 } })",
31 "phase": "03-selected-group-move",
32 "publications": 1,
33 "reviewed": [],
34 "text_receipt": "Some(Published { revision: ExGuid { guid: [226, 195, 144, 213, 163, 25, 255, 79, 131, 63, 105, 93, 194, 6, 124, 135], n: 1 } })"
35}
\ No newline at end of file
corpus/page-lifecycle/offline-edits-series/indent-03-selected-group-move/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-6DEF4909 -ExpectedPages 9", "exit": 0, "stdout": "Read 1 sections and 9 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-lifecycle/offline-edits-series/indent-03-selected-group-move/cold/machine.json created+1
......@@ -0,0 +1 @@
1{"name": "m6-6def4909", "hostname": "ONE-M6-6DEF4909"}
corpus/page-lifecycle/offline-edits-series/indent-03-selected-group-move/cold/notebook/Lifecycle.one created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/indent-03-selected-group-move/cold/notebook/Lifecycle.one differ
corpus/page-lifecycle/offline-edits-series/indent-03-selected-group-move/cold/notebook/Open Notebook.onetoc2 created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/indent-03-selected-group-move/cold/notebook/Open Notebook.onetoc2 differ
corpus/page-lifecycle/offline-edits-series/indent-03-selected-group-move/cold/read/environment.json created+7
......@@ -0,0 +1,7 @@
1{
2 "powershell": "5.1.14409.1005",
3 "schema": "xs2010",
4 "hostname": "ONE-M6-6DEF4909",
5 "cold": true,
6 "onenote": "14.0.4763.1000"
7}
corpus/page-lifecycle/offline-edits-series/indent-03-selected-group-move/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="{41D988D4-34F8-45C1-A94E-DBE5D4E4737E}{1}{B0}" path="C:\one-tests\runs\capture\notebook" lastModifiedTime="2026-09-27T15:33:17.000Z" color="#B49EDE"><one:Section name="Lifecycle" ID="{30727ECA-D927-0519-0084-E72DA4E95E71}{1}{B0}" path="C:\one-tests\runs\capture\notebook\Lifecycle.one" lastModifiedTime="2026-09-27T15:33:17.000Z" color="#91BAAE"><one:Page ID="{D048273F-96A7-0D1E-1599-77F57DA37CE1}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:33:17.000Z" pageLevel="1"/><one:Page ID="{9A255ECC-060C-048C-01DA-77D49033B7CF}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:33:17.000Z" pageLevel="1"/><one:Page ID="{BA2A9FFF-0FD4-03AE-1147-B1206B819FAA}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:33:17.000Z" pageLevel="1"/><one:Page ID="{7D75CDFB-C611-41AC-B228-B5DE6A3A8519}{1}{B0}" name="Renamed 🦋 é" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:33:17.000Z" pageLevel="1"/><one:Page ID="{1690375B-F0ED-4B9D-8D88-B785FD031103}{1}{B0}" name="Body trailing 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:33:17.000Z" pageLevel="1"/><one:Page ID="{6DD953B8-A5E4-4CFF-A632-DF84F9CA3C32}{1}{B0}" name="Body automatic 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:33:17.000Z" pageLevel="1"/><one:Page ID="{AEE6D686-0911-46F8-AC44-F99CD3D5A072}{1}{B0}" name="Same title" dateTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-09T06:03:25.000Z" pageLevel="1"/><one:Page ID="{F36AFD15-8F57-4CFE-92A9-C14897FF3483}{1}{B0}" name="child" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:33:17.000Z" pageLevel="2"/><one:Page ID="{AEB63FD6-159D-42A1-8E8F-19E4BD4D6855}{1}{B0}" name="grandchild" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:33:17.000Z" pageLevel="3"/></one:Section></one:Notebook>
corpus/page-lifecycle/offline-edits-series/indent-03-selected-group-move/cold/read/page-000.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="{1690375B-F0ED-4B9D-8D88-B785FD031103}{1}{B0}" name="Body trailing 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:33:17.000Z" pageLevel="1" lang="en-US"><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-09T03:09:34.000Z" lastModifiedTime="2026-09-09T03:09:34.000Z" objectID="{531E26D6-FDA0-4E2F-9859-0B85B11F01B3}{16}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{87A11726-DF7D-41AD-BFDD-D561DB84FB4F}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="160.1752014160156" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{87A11726-DF7D-41AD-BFDD-D561DB84FB4F}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body trailing &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-03-selected-group-move/cold/read/page-001.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="{6DD953B8-A5E4-4CFF-A632-DF84F9CA3C32}{1}{B0}" name="Body automatic 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:33:17.000Z" pageLevel="1" lang="en-US"><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:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{DAA729F0-0D4E-431E-A4F0-04BADA949F21}{14}{B0}"><one:Position x="36.0" y="14.40000057220459" z="0"/><one:Size width="174.3547973632812" height="13.42771625518799"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{DAA729F0-0D4E-431E-A4F0-04BADA949F21}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body automatic &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-03-selected-group-move/cold/read/page-002.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="{7D75CDFB-C611-41AC-B228-B5DE6A3A8519}{1}{B0}" name="Renamed 🦋 é" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:33:17.000Z" pageLevel="1" lang="en-US"><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-09T03:09:34.000Z" lastModifiedTime="2026-09-09T03:09:34.000Z" objectID="{508D2C4F-20AA-46DC-A456-559CBC6C0066}{16}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Renamed &#129419; é]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{1BFA07E5-4897-4A46-A116-CAFC1F0CB158}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="170.2942504882812" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{1BFA07E5-4897-4A46-A116-CAFC1F0CB158}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body duplicate &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-03-selected-group-move/cold/read/page-003.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{9A255ECC-060C-048C-01DA-77D49033B7CF}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:33:17.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="17.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-09T03:09:19.000Z" lastModifiedTime="2026-09-09T03:09:19.000Z" objectID="{B5C19B17-A959-0895-2AB0-0F6ABC55694D}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-03-selected-group-move/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="{AEB63FD6-159D-42A1-8E8F-19E4BD4D6855}{1}{B0}" name="grandchild" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:33:17.000Z" pageLevel="3" lang="en-US"><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-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{3E631465-14A7-410E-B28A-A96C94C50B14}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[grandchild]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{3E631465-14A7-410E-B28A-A96C94C50B14}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="175.9715728759766" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{3E631465-14A7-410E-B28A-A96C94C50B14}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body grandchild &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-03-selected-group-move/cold/read/page-005.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="{AEE6D686-0911-46F8-AC44-F99CD3D5A072}{1}{B0}" name="Same title" dateTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-09T06:03:25.000Z" pageLevel="1" lang="en-US"><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-09T03:09:27.000Z" lastModifiedTime="2026-09-09T06:03:08.000Z" objectID="{ACFD4FFC-5DB7-4C6D-9E7B-3393FD2EBECF}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-27T15:05:57.000Z" objectID="{ACFD4FFC-5DB7-4C6D-9E7B-3393FD2EBECF}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="192.0257415771484" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-27T15:05:57.000Z" objectID="{ACFD4FFC-5DB7-4C6D-9E7B-3393FD2EBECF}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Offline Body parent &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-03-selected-group-move/cold/read/page-006.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{BA2A9FFF-0FD4-03AE-1147-B1206B819FAA}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:33:17.000Z" pageLevel="1"><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-03-selected-group-move/cold/read/page-007.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{D048273F-96A7-0D1E-1599-77F57DA37CE1}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:33:17.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="17.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-09T03:09:19.000Z" lastModifiedTime="2026-09-09T03:09:19.000Z" objectID="{1E3D5624-AA12-0579-3E1E-2CC5E7D0F01E}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-03-selected-group-move/cold/read/page-008.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="{F36AFD15-8F57-4CFE-92A9-C14897FF3483}{1}{B0}" name="child" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:33:17.000Z" pageLevel="2" lang="en-US"><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-09T03:09:29.000Z" lastModifiedTime="2026-09-09T03:09:29.000Z" objectID="{793E8866-6D7A-4856-BAEE-DE1A2C44ED27}{28}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[child]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{793E8866-6D7A-4856-BAEE-DE1A2C44ED27}{35}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="149.6102294921875" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-09T03:09:29.000Z" objectID="{793E8866-6D7A-4856-BAEE-DE1A2C44ED27}{36}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body child &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-03-selected-group-move/cold/read/payloads.json created+3
......@@ -0,0 +1,3 @@
1[
2
3]
\ No newline at end of file
corpus/page-lifecycle/offline-edits-series/indent-03-selected-group-move/cold/run.json created+18
......@@ -0,0 +1,18 @@
1{
2 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmpb5gki0t4",
3 "expected_pages": 9,
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-lifecycle/offline-edits-series/indent-03-selected-group-move/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-lifecycle/offline-edits-series/indent-03-selected-group-move/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-lifecycle/offline-edits-series/indent-03-selected-group-move/cold/source.json created+8
......@@ -0,0 +1,8 @@
1[
2 {
3 "path": "Lifecycle.one",
4 "bytes": 62448,
5 "sha256": "62f0d051077351cfee81931153467cbf510700e94b46347a78e287801943f37c",
6 "mtime_ns": 1790522182574538544
7 }
8]
corpus/page-lifecycle/offline-edits-series/indent-03-selected-group-move/cold/teardown.json created+1
......@@ -0,0 +1 @@
1{"absent": true}
corpus/page-lifecycle/offline-edits-series/indent-04-subpage-move/candidate/Lifecycle.one created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/indent-04-subpage-move/candidate/Lifecycle.one differ
corpus/page-lifecycle/offline-edits-series/indent-04-subpage-move/candidate/manifest.json created+35
......@@ -0,0 +1,35 @@
1{
2 "confirmations": 0,
3 "conflict": true,
4 "mode": "indent",
5 "original": [
6 {
7 "guid": [
8 112,
9 19,
10 103,
11 0,
12 67,
13 152,
14 215,
15 75,
16 186,
17 173,
18 109,
19 239,
20 32,
21 173,
22 18,
23 173
24 ],
25 "level": 3,
26 "position": "Keep",
27 "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1"
28 }
29 ],
30 "page_receipt": "Some(Published { revision: ExGuid { guid: [140, 1, 52, 173, 83, 155, 53, 75, 176, 124, 221, 5, 197, 47, 143, 47], n: 1 } })",
31 "phase": "04-subpage-move",
32 "publications": 1,
33 "reviewed": [],
34 "text_receipt": "Some(Published { revision: ExGuid { guid: [140, 1, 52, 173, 83, 155, 53, 75, 176, 124, 221, 5, 197, 47, 143, 47], n: 1 } })"
35}
\ No newline at end of file
corpus/page-lifecycle/offline-edits-series/indent-04-subpage-move/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-3CF1AD85 -ExpectedPages 9", "exit": 0, "stdout": "Read 1 sections and 9 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-lifecycle/offline-edits-series/indent-04-subpage-move/cold/machine.json created+1
......@@ -0,0 +1 @@
1{"name": "m6-3cf1ad85", "hostname": "ONE-M6-3CF1AD85"}
corpus/page-lifecycle/offline-edits-series/indent-04-subpage-move/cold/notebook/Lifecycle.one created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/indent-04-subpage-move/cold/notebook/Lifecycle.one differ
corpus/page-lifecycle/offline-edits-series/indent-04-subpage-move/cold/notebook/Open Notebook.onetoc2 created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/indent-04-subpage-move/cold/notebook/Open Notebook.onetoc2 differ
corpus/page-lifecycle/offline-edits-series/indent-04-subpage-move/cold/read/environment.json created+7
......@@ -0,0 +1,7 @@
1{
2 "powershell": "5.1.14409.1005",
3 "schema": "xs2010",
4 "hostname": "ONE-M6-3CF1AD85",
5 "cold": true,
6 "onenote": "14.0.4763.1000"
7}
corpus/page-lifecycle/offline-edits-series/indent-04-subpage-move/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="{05D4D265-8B7D-4092-9700-6B459727CD1E}{1}{B0}" path="C:\one-tests\runs\capture\notebook" lastModifiedTime="2026-09-27T15:33:17.000Z" color="#B49EDE"><one:Section name="Lifecycle" ID="{9B5BD099-85FF-0508-0845-9E1810FA5389}{1}{B0}" path="C:\one-tests\runs\capture\notebook\Lifecycle.one" lastModifiedTime="2026-09-27T15:33:17.000Z" color="#91BAAE"><one:Page ID="{7B61896C-CA7F-0D0F-1D58-0EC0C9B07119}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:33:17.000Z" pageLevel="1"/><one:Page ID="{310CF09F-5AD4-049D-091B-0EE12420BA37}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:33:17.000Z" pageLevel="1"/><one:Page ID="{110331AC-530C-03BF-1986-C815DF929252}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:33:17.000Z" pageLevel="1"/><one:Page ID="{58435346-D38F-4CEF-9A68-B87D23EC397B}{1}{B0}" name="child" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:33:17.000Z" pageLevel="1"/><one:Page ID="{D65C63A8-9AC9-41BD-BAE9-CCEBDE2988E1}{1}{B0}" name="Renamed 🦋 é" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:33:17.000Z" pageLevel="1"/><one:Page ID="{BDB99908-AC35-4B8C-8549-CEB049101CFB}{1}{B0}" name="Body trailing 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:33:17.000Z" pageLevel="1"/><one:Page ID="{C6F0FDEB-F93C-4CEE-AEF3-A6B14DD931CA}{1}{B0}" name="Body automatic 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:33:17.000Z" pageLevel="1"/><one:Page ID="{05CF78D5-55C9-46E9-A485-80A967C6AD8A}{1}{B0}" name="Same title" dateTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-09T06:03:25.000Z" pageLevel="1"/><one:Page ID="{059F9185-4945-42B0-864E-60D1095E65AD}{1}{B0}" name="grandchild" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:33:17.000Z" pageLevel="3"/></one:Section></one:Notebook>
corpus/page-lifecycle/offline-edits-series/indent-04-subpage-move/cold/read/page-000.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="{059F9185-4945-42B0-864E-60D1095E65AD}{1}{B0}" name="grandchild" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:33:17.000Z" pageLevel="3" lang="en-US"><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-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{954ABA36-487F-411F-BA4B-D05920D606EC}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[grandchild]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{954ABA36-487F-411F-BA4B-D05920D606EC}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="175.9715728759766" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{954ABA36-487F-411F-BA4B-D05920D606EC}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body grandchild &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-04-subpage-move/cold/read/page-001.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="{05CF78D5-55C9-46E9-A485-80A967C6AD8A}{1}{B0}" name="Same title" dateTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-09T06:03:25.000Z" pageLevel="1" lang="en-US"><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-09T03:09:27.000Z" lastModifiedTime="2026-09-09T06:03:08.000Z" objectID="{07D4E1AF-016F-4C7C-96BA-4AA6493DB337}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-27T15:05:57.000Z" objectID="{07D4E1AF-016F-4C7C-96BA-4AA6493DB337}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="192.0257415771484" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-27T15:05:57.000Z" objectID="{07D4E1AF-016F-4C7C-96BA-4AA6493DB337}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Offline Body parent &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-04-subpage-move/cold/read/page-002.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{110331AC-530C-03BF-1986-C815DF929252}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:33:17.000Z" pageLevel="1"><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-04-subpage-move/cold/read/page-003.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{310CF09F-5AD4-049D-091B-0EE12420BA37}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:33:17.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="17.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-09T03:09:19.000Z" lastModifiedTime="2026-09-09T03:09:19.000Z" objectID="{1EE83544-F581-0884-2271-765F084664B5}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-04-subpage-move/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="{58435346-D38F-4CEF-9A68-B87D23EC397B}{1}{B0}" name="child" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:33:17.000Z" pageLevel="1" lang="en-US"><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-09T03:09:29.000Z" lastModifiedTime="2026-09-09T06:03:46.000Z" objectID="{D2172635-31A2-4847-B22F-A72F9857E0DF}{28}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[child]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T06:03:46.000Z" objectID="{D2172635-31A2-4847-B22F-A72F9857E0DF}{35}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="149.6102294921875" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-09T06:03:46.000Z" objectID="{D2172635-31A2-4847-B22F-A72F9857E0DF}{36}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body child &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-04-subpage-move/cold/read/page-005.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{7B61896C-CA7F-0D0F-1D58-0EC0C9B07119}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:33:17.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="17.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-09T03:09:19.000Z" lastModifiedTime="2026-09-09T03:09:19.000Z" objectID="{B514F877-F6CA-0568-36DF-55F053C3FDE6}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-04-subpage-move/cold/read/page-006.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="{BDB99908-AC35-4B8C-8549-CEB049101CFB}{1}{B0}" name="Body trailing 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:33:17.000Z" pageLevel="1" lang="en-US"><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-09T03:09:34.000Z" lastModifiedTime="2026-09-09T03:09:34.000Z" objectID="{F8378885-A178-4E3E-9098-72B0050C0C4B}{16}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{2C88B975-83A5-41BC-B71C-AC546F97F6B7}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="160.1752014160156" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{2C88B975-83A5-41BC-B71C-AC546F97F6B7}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body trailing &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-04-subpage-move/cold/read/page-007.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="{C6F0FDEB-F93C-4CEE-AEF3-A6B14DD931CA}{1}{B0}" name="Body automatic 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:33:17.000Z" pageLevel="1" lang="en-US"><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:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{718E87A3-5196-430F-AC31-7D8F6E8792D9}{14}{B0}"><one:Position x="36.0" y="14.40000057220459" z="0"/><one:Size width="174.3547973632812" height="13.42771625518799"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{718E87A3-5196-430F-AC31-7D8F6E8792D9}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body automatic &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-04-subpage-move/cold/read/page-008.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="{D65C63A8-9AC9-41BD-BAE9-CCEBDE2988E1}{1}{B0}" name="Renamed 🦋 é" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:33:17.000Z" pageLevel="1" lang="en-US"><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-09T03:09:34.000Z" lastModifiedTime="2026-09-09T03:09:34.000Z" objectID="{FBA4821C-7C72-46CD-AC97-2CA9087F0D9E}{16}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Renamed &#129419; é]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{B0D3A9B6-144F-4A57-A9D7-B3C9AB1FBCA0}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="170.2942504882812" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{B0D3A9B6-144F-4A57-A9D7-B3C9AB1FBCA0}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body duplicate &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-04-subpage-move/cold/read/payloads.json created+3
......@@ -0,0 +1,3 @@
1[
2
3]
\ No newline at end of file
corpus/page-lifecycle/offline-edits-series/indent-04-subpage-move/cold/run.json created+18
......@@ -0,0 +1,18 @@
1{
2 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmplfmc8y5c",
3 "expected_pages": 9,
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-lifecycle/offline-edits-series/indent-04-subpage-move/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-lifecycle/offline-edits-series/indent-04-subpage-move/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-lifecycle/offline-edits-series/indent-04-subpage-move/cold/source.json created+8
......@@ -0,0 +1,8 @@
1[
2 {
3 "path": "Lifecycle.one",
4 "bytes": 65000,
5 "sha256": "e61b424191b7ddde476e498953e5fedb01566f5fdcf5ec5ad85b75dc81ae4b81",
6 "mtime_ns": 1790522182580783526
7 }
8]
corpus/page-lifecycle/offline-edits-series/indent-04-subpage-move/cold/teardown.json created+1
......@@ -0,0 +1 @@
1{"absent": true}
corpus/page-lifecycle/offline-edits-series/indent-05-insert-before-subpage/candidate/Lifecycle.one created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/indent-05-insert-before-subpage/candidate/Lifecycle.one differ
corpus/page-lifecycle/offline-edits-series/indent-05-insert-before-subpage/candidate/manifest.json created+35
......@@ -0,0 +1,35 @@
1{
2 "confirmations": 0,
3 "conflict": true,
4 "mode": "indent",
5 "original": [
6 {
7 "guid": [
8 4,
9 56,
10 164,
11 224,
12 230,
13 112,
14 75,
15 69,
16 132,
17 225,
18 72,
19 65,
20 90,
21 35,
22 245,
23 82
24 ],
25 "level": 3,
26 "position": "Keep",
27 "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1"
28 }
29 ],
30 "page_receipt": "Some(Published { revision: ExGuid { guid: [217, 51, 175, 155, 204, 150, 117, 70, 128, 20, 45, 123, 132, 193, 234, 183], n: 1 } })",
31 "phase": "05-insert-before-subpage",
32 "publications": 1,
33 "reviewed": [],
34 "text_receipt": "Some(Published { revision: ExGuid { guid: [217, 51, 175, 155, 204, 150, 117, 70, 128, 20, 45, 123, 132, 193, 234, 183], n: 1 } })"
35}
\ No newline at end of file
corpus/page-lifecycle/offline-edits-series/indent-05-insert-before-subpage/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-C302208F -ExpectedPages 9", "exit": 0, "stdout": "Read 1 sections and 9 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-lifecycle/offline-edits-series/indent-05-insert-before-subpage/cold/machine.json created+1
......@@ -0,0 +1 @@
1{"name": "m6-c302208f", "hostname": "ONE-M6-C302208F"}
corpus/page-lifecycle/offline-edits-series/indent-05-insert-before-subpage/cold/notebook/Lifecycle.one created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/indent-05-insert-before-subpage/cold/notebook/Lifecycle.one differ
corpus/page-lifecycle/offline-edits-series/indent-05-insert-before-subpage/cold/notebook/Open Notebook.onetoc2 created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/indent-05-insert-before-subpage/cold/notebook/Open Notebook.onetoc2 differ
corpus/page-lifecycle/offline-edits-series/indent-05-insert-before-subpage/cold/read/environment.json created+7
......@@ -0,0 +1,7 @@
1{
2 "powershell": "5.1.14409.1005",
3 "schema": "xs2010",
4 "hostname": "ONE-M6-C302208F",
5 "cold": true,
6 "onenote": "14.0.4763.1000"
7}
corpus/page-lifecycle/offline-edits-series/indent-05-insert-before-subpage/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="{311E4AEC-137F-48FC-AA70-C3B3D85C306D}{1}{B0}" path="C:\one-tests\runs\capture\notebook" lastModifiedTime="2026-09-27T15:33:20.000Z" color="#B49EDE"><one:Section name="Lifecycle" ID="{43705451-6CDB-0214-3122-46835CF24ABB}{1}{B0}" path="C:\one-tests\runs\capture\notebook\Lifecycle.one" lastModifiedTime="2026-09-27T15:33:20.000Z" color="#91BAAE"><one:Page ID="{A34A0DA4-235B-0A13-243F-D65B85B8682B}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:33:20.000Z" pageLevel="1"/><one:Page ID="{E9277457-B3F0-0381-307C-D67A6828A305}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:33:20.000Z" pageLevel="1"/><one:Page ID="{C928B564-BA28-04A3-20E1-108E939A8B60}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:33:20.000Z" pageLevel="1"/><one:Page ID="{0E77E760-73ED-46A1-838E-1470922191D3}{1}{B0}" name="Renamed 🦋 é" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:33:20.000Z" pageLevel="1"/><one:Page ID="{65921DC0-4511-4C90-BC2E-162B051805C9}{1}{B0}" name="Body trailing 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:33:20.000Z" pageLevel="1"/><one:Page ID="{1EDB7923-1018-4BF2-9794-7E2A01D128F8}{1}{B0}" name="Body automatic 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:33:20.000Z" pageLevel="1"/><one:Page ID="{DDE4FC1D-BCED-41F5-9DE2-58322BCEB4B8}{1}{B0}" name="Same title" dateTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-09T06:03:25.000Z" pageLevel="1"/><one:Page ID="{8068D78E-3AAB-4BF3-A30F-60E66FE42049}{1}{B0}" name="child" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:33:20.000Z" pageLevel="3"/><one:Page ID="{DDB4154D-A061-45AC-BF29-B84A45567C9F}{1}{B0}" name="grandchild" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:33:20.000Z" pageLevel="3"/></one:Section></one:Notebook>
corpus/page-lifecycle/offline-edits-series/indent-05-insert-before-subpage/cold/read/page-000.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="{0E77E760-73ED-46A1-838E-1470922191D3}{1}{B0}" name="Renamed 🦋 é" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:33:20.000Z" pageLevel="1" lang="en-US"><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-09T03:09:34.000Z" lastModifiedTime="2026-09-09T03:09:34.000Z" objectID="{238F06D4-9556-41D1-95F0-F432447714AC}{16}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Renamed &#129419; é]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{68F82D7E-FD6B-4D4B-90B0-6B52E717A592}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="170.2942504882812" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{68F82D7E-FD6B-4D4B-90B0-6B52E717A592}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body duplicate &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-05-insert-before-subpage/cold/read/page-001.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="{1EDB7923-1018-4BF2-9794-7E2A01D128F8}{1}{B0}" name="Body automatic 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:33:20.000Z" pageLevel="1" lang="en-US"><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:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{A9A5036B-B8B2-4413-9556-A514228F8BEB}{14}{B0}"><one:Position x="36.0" y="14.40000057220459" z="0"/><one:Size width="174.3547973632812" height="13.42771625518799"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{A9A5036B-B8B2-4413-9556-A514228F8BEB}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body automatic &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-05-insert-before-subpage/cold/read/page-002.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="{65921DC0-4511-4C90-BC2E-162B051805C9}{1}{B0}" name="Body trailing 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:33:20.000Z" pageLevel="1" lang="en-US"><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-09T03:09:34.000Z" lastModifiedTime="2026-09-09T03:09:34.000Z" objectID="{201C0C4D-485C-4922-A9FF-AA2B49041579}{16}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{F4A33DBD-6A81-46A0-8E7B-74CF239FEF85}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="160.1752014160156" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{F4A33DBD-6A81-46A0-8E7B-74CF239FEF85}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body trailing &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-05-insert-before-subpage/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="{8068D78E-3AAB-4BF3-A30F-60E66FE42049}{1}{B0}" name="child" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:33:20.000Z" pageLevel="3" lang="en-US"><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-09T03:09:29.000Z" lastModifiedTime="2026-09-09T06:03:46.000Z" objectID="{0A3CA2FD-D886-4F5B-8B48-7FB4D45FF9ED}{28}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[child]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T06:03:46.000Z" objectID="{0A3CA2FD-D886-4F5B-8B48-7FB4D45FF9ED}{35}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="149.6102294921875" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-09T06:03:46.000Z" objectID="{0A3CA2FD-D886-4F5B-8B48-7FB4D45FF9ED}{36}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body child &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-05-insert-before-subpage/cold/read/page-004.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{A34A0DA4-235B-0A13-243F-D65B85B8682B}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:33:20.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="17.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-09T03:09:19.000Z" lastModifiedTime="2026-09-09T03:09:19.000Z" objectID="{6D3F7CBF-1FEE-0274-0FB8-8D6B1FCBE4D4}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-05-insert-before-subpage/cold/read/page-005.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{C928B564-BA28-04A3-20E1-108E939A8B60}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:33:20.000Z" pageLevel="1"><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-05-insert-before-subpage/cold/read/page-006.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="{DDB4154D-A061-45AC-BF29-B84A45567C9F}{1}{B0}" name="grandchild" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:33:20.000Z" pageLevel="3" lang="en-US"><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-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{4D613EFE-A15B-4603-832C-08C26CDE1FDE}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[grandchild]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{4D613EFE-A15B-4603-832C-08C26CDE1FDE}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="175.9715728759766" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{4D613EFE-A15B-4603-832C-08C26CDE1FDE}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body grandchild &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-05-insert-before-subpage/cold/read/page-007.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="{DDE4FC1D-BCED-41F5-9DE2-58322BCEB4B8}{1}{B0}" name="Same title" dateTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-09T06:03:25.000Z" pageLevel="1" lang="en-US"><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-09T03:09:27.000Z" lastModifiedTime="2026-09-09T06:03:08.000Z" objectID="{DFFF6567-E84B-4B60-AFDD-923D0535AA05}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-27T15:05:57.000Z" objectID="{DFFF6567-E84B-4B60-AFDD-923D0535AA05}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="192.0257415771484" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-27T15:05:57.000Z" objectID="{DFFF6567-E84B-4B60-AFDD-923D0535AA05}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Offline Body parent &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-05-insert-before-subpage/cold/read/page-008.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{E9277457-B3F0-0381-307C-D67A6828A305}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:33:20.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="17.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-09T03:09:19.000Z" lastModifiedTime="2026-09-09T03:09:19.000Z" objectID="{C6C3B18C-1CA5-0F98-1B16-AEC4444E7D87}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-05-insert-before-subpage/cold/read/payloads.json created+3
......@@ -0,0 +1,3 @@
1[
2
3]
\ No newline at end of file
corpus/page-lifecycle/offline-edits-series/indent-05-insert-before-subpage/cold/run.json created+18
......@@ -0,0 +1,18 @@
1{
2 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmp3bp2l4t4",
3 "expected_pages": 9,
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-lifecycle/offline-edits-series/indent-05-insert-before-subpage/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-lifecycle/offline-edits-series/indent-05-insert-before-subpage/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-lifecycle/offline-edits-series/indent-05-insert-before-subpage/cold/source.json created+8
......@@ -0,0 +1,8 @@
1[
2 {
3 "path": "Lifecycle.one",
4 "bytes": 66944,
5 "sha256": "b1f5d19ffee4ff89ab2a14066a729b5585179339be2b18227f92c0bf2b44c42e",
6 "mtime_ns": 1790522182565951458
7 }
8]
corpus/page-lifecycle/offline-edits-series/indent-05-insert-before-subpage/cold/teardown.json created+1
......@@ -0,0 +1 @@
1{"absent": true}
corpus/page-lifecycle/offline-edits-series/indent-06-promoted-level-two/candidate/Lifecycle.one created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/indent-06-promoted-level-two/candidate/Lifecycle.one differ
corpus/page-lifecycle/offline-edits-series/indent-06-promoted-level-two/candidate/manifest.json created+35
......@@ -0,0 +1,35 @@
1{
2 "confirmations": 0,
3 "conflict": true,
4 "mode": "indent",
5 "original": [
6 {
7 "guid": [
8 178,
9 31,
10 183,
11 138,
12 26,
13 221,
14 93,
15 78,
16 173,
17 192,
18 148,
19 78,
20 69,
21 246,
22 210,
23 44
24 ],
25 "level": 3,
26 "position": "Keep",
27 "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1"
28 }
29 ],
30 "page_receipt": "Some(Published { revision: ExGuid { guid: [113, 37, 105, 136, 152, 116, 183, 79, 158, 85, 240, 239, 61, 75, 67, 196], n: 1 } })",
31 "phase": "06-promoted-level-two",
32 "publications": 1,
33 "reviewed": [],
34 "text_receipt": "Some(Published { revision: ExGuid { guid: [113, 37, 105, 136, 152, 116, 183, 79, 158, 85, 240, 239, 61, 75, 67, 196], n: 1 } })"
35}
\ No newline at end of file
corpus/page-lifecycle/offline-edits-series/indent-06-promoted-level-two/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-BC497350 -ExpectedPages 9", "exit": 0, "stdout": "Read 1 sections and 9 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-lifecycle/offline-edits-series/indent-06-promoted-level-two/cold/machine.json created+1
......@@ -0,0 +1 @@
1{"name": "m6-bc497350", "hostname": "ONE-M6-BC497350"}
corpus/page-lifecycle/offline-edits-series/indent-06-promoted-level-two/cold/notebook/Lifecycle.one created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/indent-06-promoted-level-two/cold/notebook/Lifecycle.one differ
corpus/page-lifecycle/offline-edits-series/indent-06-promoted-level-two/cold/notebook/Open Notebook.onetoc2 created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/indent-06-promoted-level-two/cold/notebook/Open Notebook.onetoc2 differ
corpus/page-lifecycle/offline-edits-series/indent-06-promoted-level-two/cold/read/environment.json created+7
......@@ -0,0 +1,7 @@
1{
2 "powershell": "5.1.14409.1005",
3 "schema": "xs2010",
4 "hostname": "ONE-M6-BC497350",
5 "cold": true,
6 "onenote": "14.0.4763.1000"
7}
corpus/page-lifecycle/offline-edits-series/indent-06-promoted-level-two/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="{9A1006D9-20C6-4F20-ACB6-4BA99E58AC85}{1}{B0}" path="C:\one-tests\runs\capture\notebook" lastModifiedTime="2026-09-27T15:33:20.000Z" color="#B49EDE"><one:Section name="Lifecycle" ID="{9835DF1B-55AF-0519-33EE-082E50EDCBBD}{1}{B0}" path="C:\one-tests\runs\capture\notebook\Lifecycle.one" lastModifiedTime="2026-09-27T15:33:20.000Z" color="#91BAAE"><one:Page ID="{780F86EE-1A2F-0D1E-26F3-98F689A7E92D}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:33:20.000Z" pageLevel="1"/><one:Page ID="{3262FF1D-8A84-048C-32B0-98D764372203}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:33:20.000Z" pageLevel="1"/><one:Page ID="{126D3E2E-835C-03AE-222D-5E239F850A66}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:33:20.000Z" pageLevel="1"/><one:Page ID="{D5326C2A-4A99-41AC-8142-5ADD9E3E10D5}{1}{B0}" name="Renamed 🦋 é" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:33:20.000Z" pageLevel="1"/><one:Page ID="{BED7968A-7C65-4B9D-BEE2-5886090784CF}{1}{B0}" name="Body trailing 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:33:20.000Z" pageLevel="1"/><one:Page ID="{C59EF269-296C-4CFF-9558-30870DCEA9FE}{1}{B0}" name="Body automatic 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:33:20.000Z" pageLevel="1"/><one:Page ID="{06A17757-8599-46F8-9F2E-169F27D135BE}{1}{B0}" name="Same title" dateTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-09T06:03:25.000Z" pageLevel="1"/><one:Page ID="{5B2D5CC4-03DF-4CFE-A1C3-2E4B63FBA14F}{1}{B0}" name="child" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-09T06:04:12.000Z" pageLevel="2"/><one:Page ID="{06F19E07-9915-42A1-BDE5-F6E74949FD99}{1}{B0}" name="grandchild" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:33:20.000Z" pageLevel="3"/></one:Section></one:Notebook>
corpus/page-lifecycle/offline-edits-series/indent-06-promoted-level-two/cold/read/page-000.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="{06A17757-8599-46F8-9F2E-169F27D135BE}{1}{B0}" name="Same title" dateTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-09T06:03:25.000Z" pageLevel="1" lang="en-US"><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-09T03:09:27.000Z" lastModifiedTime="2026-09-09T06:03:08.000Z" objectID="{04BAEE2D-D13F-4C6D-AD11-DC90092A2B03}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-27T15:05:58.000Z" objectID="{04BAEE2D-D13F-4C6D-AD11-DC90092A2B03}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="192.0257415771484" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-27T15:05:58.000Z" objectID="{04BAEE2D-D13F-4C6D-AD11-DC90092A2B03}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Offline Body parent &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-06-promoted-level-two/cold/read/page-001.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="{06F19E07-9915-42A1-BDE5-F6E74949FD99}{1}{B0}" name="grandchild" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:33:20.000Z" pageLevel="3" lang="en-US"><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-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{9624B5B4-982F-410E-81E0-466F60C19ED8}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[grandchild]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{9624B5B4-982F-410E-81E0-466F60C19ED8}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="175.9715728759766" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{9624B5B4-982F-410E-81E0-466F60C19ED8}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body grandchild &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-06-promoted-level-two/cold/read/page-002.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{126D3E2E-835C-03AE-222D-5E239F850A66}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:33:20.000Z" pageLevel="1"><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-06-promoted-level-two/cold/read/page-003.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{3262FF1D-8A84-048C-32B0-98D764372203}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:33:20.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="17.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-09T03:09:19.000Z" lastModifiedTime="2026-09-09T03:09:19.000Z" objectID="{1D863AC6-25D1-0895-19DA-E0694851FC81}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-06-promoted-level-two/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="{5B2D5CC4-03DF-4CFE-A1C3-2E4B63FBA14F}{1}{B0}" name="child" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-09T06:04:12.000Z" pageLevel="2" lang="en-US"><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-09T03:09:29.000Z" lastModifiedTime="2026-09-09T06:03:46.000Z" objectID="{D17929B7-E1F2-4856-8984-3119D84078EB}{28}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[child]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T06:03:46.000Z" objectID="{D17929B7-E1F2-4856-8984-3119D84078EB}{35}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="149.6102294921875" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-09T06:03:46.000Z" objectID="{D17929B7-E1F2-4856-8984-3119D84078EB}{36}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body child &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-06-promoted-level-two/cold/read/page-005.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{780F86EE-1A2F-0D1E-26F3-98F689A7E92D}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:33:20.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="17.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-09T03:09:19.000Z" lastModifiedTime="2026-09-09T03:09:19.000Z" objectID="{B67AF7F5-269A-0579-0D74-C3C613D465D2}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-06-promoted-level-two/cold/read/page-006.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="{BED7968A-7C65-4B9D-BEE2-5886090784CF}{1}{B0}" name="Body trailing 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:33:20.000Z" pageLevel="1" lang="en-US"><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-09T03:09:34.000Z" lastModifiedTime="2026-09-09T03:09:34.000Z" objectID="{FB598707-7128-4E2F-AB33-E486451B947F}{16}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{2FE6B6F7-53F5-41AD-8CB7-3A622F806E83}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="160.1752014160156" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{2FE6B6F7-53F5-41AD-8CB7-3A622F806E83}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body trailing &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-06-promoted-level-two/cold/read/page-007.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="{C59EF269-296C-4CFF-9558-30870DCEA9FE}{1}{B0}" name="Body automatic 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:33:20.000Z" pageLevel="1" lang="en-US"><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:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{72E08821-81C6-431E-979A-EBB92E900AED}{14}{B0}"><one:Position x="36.0" y="14.40000057220459" z="0"/><one:Size width="174.3547973632812" height="13.42771625518799"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{72E08821-81C6-431E-979A-EBB92E900AED}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body automatic &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-06-promoted-level-two/cold/read/page-008.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="{D5326C2A-4A99-41AC-8142-5ADD9E3E10D5}{1}{B0}" name="Renamed 🦋 é" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:33:20.000Z" pageLevel="1" lang="en-US"><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-09T03:09:34.000Z" lastModifiedTime="2026-09-09T03:09:34.000Z" objectID="{F8CA8D9E-AC22-46DC-973C-BA9F486895AA}{16}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Renamed &#129419; é]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{B3BDA634-C41F-4A46-927C-25FFEB082494}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="170.2942504882812" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{B3BDA634-C41F-4A46-927C-25FFEB082494}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body duplicate &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-06-promoted-level-two/cold/read/payloads.json created+3
......@@ -0,0 +1,3 @@
1[
2
3]
\ No newline at end of file
corpus/page-lifecycle/offline-edits-series/indent-06-promoted-level-two/cold/run.json created+18
......@@ -0,0 +1,18 @@
1{
2 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmpjja19zue",
3 "expected_pages": 9,
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-lifecycle/offline-edits-series/indent-06-promoted-level-two/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-lifecycle/offline-edits-series/indent-06-promoted-level-two/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-lifecycle/offline-edits-series/indent-06-promoted-level-two/cold/source.json created+8
......@@ -0,0 +1,8 @@
1[
2 {
3 "path": "Lifecycle.one",
4 "bytes": 70296,
5 "sha256": "8fa8fc3275cfb17da80d2f9e08baebd8c70b8489b5721460e17c771998226876",
6 "mtime_ns": 1790522182589845898
7 }
8]
corpus/page-lifecycle/offline-edits-series/indent-06-promoted-level-two/cold/teardown.json created+1
......@@ -0,0 +1 @@
1{"absent": true}
corpus/page-lifecycle/offline-edits-series/indent-07-promoted-root/candidate/Lifecycle.one created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/indent-07-promoted-root/candidate/Lifecycle.one differ
corpus/page-lifecycle/offline-edits-series/indent-07-promoted-root/candidate/manifest.json created+35
......@@ -0,0 +1,35 @@
1{
2 "confirmations": 0,
3 "conflict": true,
4 "mode": "indent",
5 "original": [
6 {
7 "guid": [
8 73,
9 128,
10 226,
11 10,
12 127,
13 157,
14 145,
15 66,
16 185,
17 120,
18 232,
19 117,
20 193,
21 31,
22 151,
23 68
24 ],
25 "level": 3,
26 "position": "Keep",
27 "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1"
28 }
29 ],
30 "page_receipt": "Some(Published { revision: ExGuid { guid: [20, 1, 234, 89, 89, 254, 82, 68, 168, 79, 107, 96, 254, 118, 67, 34], n: 1 } })",
31 "phase": "07-promoted-root",
32 "publications": 1,
33 "reviewed": [],
34 "text_receipt": "Some(Published { revision: ExGuid { guid: [20, 1, 234, 89, 89, 254, 82, 68, 168, 79, 107, 96, 254, 118, 67, 34], n: 1 } })"
35}
\ No newline at end of file
corpus/page-lifecycle/offline-edits-series/indent-07-promoted-root/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-90980D00 -ExpectedPages 9", "exit": 0, "stdout": "Read 1 sections and 9 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-lifecycle/offline-edits-series/indent-07-promoted-root/cold/machine.json created+1
......@@ -0,0 +1 @@
1{"name": "m6-90980d00", "hostname": "ONE-M6-90980D00"}
corpus/page-lifecycle/offline-edits-series/indent-07-promoted-root/cold/notebook/Lifecycle.one created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/indent-07-promoted-root/cold/notebook/Lifecycle.one differ
corpus/page-lifecycle/offline-edits-series/indent-07-promoted-root/cold/notebook/Open Notebook.onetoc2 created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/indent-07-promoted-root/cold/notebook/Open Notebook.onetoc2 differ
corpus/page-lifecycle/offline-edits-series/indent-07-promoted-root/cold/read/environment.json created+7
......@@ -0,0 +1,7 @@
1{
2 "powershell": "5.1.14409.1005",
3 "schema": "xs2010",
4 "hostname": "ONE-M6-90980D00",
5 "cold": true,
6 "onenote": "14.0.4763.1000"
7}
corpus/page-lifecycle/offline-edits-series/indent-07-promoted-root/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="{52D14DE1-5FBF-4F2F-AA9C-76A92638DC75}{1}{B0}" path="C:\one-tests\runs\capture\notebook" lastModifiedTime="2026-09-27T15:36:47.000Z" color="#B49EDE"><one:Section name="Lifecycle" ID="{F7154C23-735A-021C-173A-B0093958F501}{1}{B0}" path="C:\one-tests\runs\capture\notebook\Lifecycle.one" lastModifiedTime="2026-09-27T15:36:47.000Z" color="#91BAAE"><one:Page ID="{172F15D6-3CDA-0A1B-0227-20D1E012D791}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:36:47.000Z" pageLevel="1"/><one:Page ID="{5D426C25-AC71-0389-1664-20F00D821CBF}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:36:47.000Z" pageLevel="1"/><one:Page ID="{7D4DAD16-A5A9-04AB-06F9-E604F63034DA}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:36:47.000Z" pageLevel="1"/><one:Page ID="{BA12FF12-6C6C-46A9-A596-E2FAF78B2E69}{1}{B0}" name="Renamed 🦋 é" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:36:47.000Z" pageLevel="1"/><one:Page ID="{D1F705B2-5A90-4C98-9A36-E0A160B2BA73}{1}{B0}" name="Body trailing 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:36:47.000Z" pageLevel="1"/><one:Page ID="{AABE6151-0F99-4BFA-B18C-88A0647B9742}{1}{B0}" name="Body automatic 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:36:47.000Z" pageLevel="1"/><one:Page ID="{6981E46F-A36C-41FD-BBFA-AEB84E640B02}{1}{B0}" name="Same title" dateTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-09T06:03:25.000Z" pageLevel="1"/><one:Page ID="{340DCFFC-252A-4BFB-8517-966C0A4E9FF3}{1}{B0}" name="child" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-09T06:04:26.000Z" pageLevel="1"/><one:Page ID="{69D10D3F-BFE0-45A4-9931-4EC020FCC325}{1}{B0}" name="grandchild" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:36:47.000Z" pageLevel="3"/></one:Section></one:Notebook>
corpus/page-lifecycle/offline-edits-series/indent-07-promoted-root/cold/read/page-000.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{172F15D6-3CDA-0A1B-0227-20D1E012D791}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:36:47.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="17.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-09T03:09:19.000Z" lastModifiedTime="2026-09-09T03:09:19.000Z" objectID="{D95A64CD-006F-027C-29A0-7BE17A615B6E}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-07-promoted-root/cold/read/page-001.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="{340DCFFC-252A-4BFB-8517-966C0A4E9FF3}{1}{B0}" name="child" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-09T06:04:26.000Z" pageLevel="1" lang="en-US"><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-09T03:09:29.000Z" lastModifiedTime="2026-09-09T06:03:46.000Z" objectID="{BE59BA8F-C707-4F53-AD50-893EB1F54657}{28}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[child]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T06:03:46.000Z" objectID="{BE59BA8F-C707-4F53-AD50-893EB1F54657}{35}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="149.6102294921875" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-09T06:03:46.000Z" objectID="{BE59BA8F-C707-4F53-AD50-893EB1F54657}{36}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body child &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-07-promoted-root/cold/read/page-002.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{5D426C25-AC71-0389-1664-20F00D821CBF}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:36:47.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="17.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-09T03:09:19.000Z" lastModifiedTime="2026-09-09T03:09:19.000Z" objectID="{72A6A9FE-0324-0F90-3D0E-584E21E4C23D}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-07-promoted-root/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="{6981E46F-A36C-41FD-BBFA-AEB84E640B02}{1}{B0}" name="Same title" dateTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-09T06:03:25.000Z" pageLevel="1" lang="en-US"><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-09T03:09:27.000Z" lastModifiedTime="2026-09-09T06:03:08.000Z" objectID="{6B9A7D15-F7CA-4B68-89C5-64B7609F15BF}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-27T15:05:58.000Z" objectID="{6B9A7D15-F7CA-4B68-89C5-64B7609F15BF}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="192.0257415771484" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-27T15:05:58.000Z" objectID="{6B9A7D15-F7CA-4B68-89C5-64B7609F15BF}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Offline Body parent &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-07-promoted-root/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="{69D10D3F-BFE0-45A4-9931-4EC020FCC325}{1}{B0}" name="grandchild" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:36:47.000Z" pageLevel="3" lang="en-US"><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-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{F904268C-BEDA-460B-A534-FE480974A064}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[grandchild]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{F904268C-BEDA-460B-A534-FE480974A064}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="175.9715728759766" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{F904268C-BEDA-460B-A534-FE480974A064}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body grandchild &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-07-promoted-root/cold/read/page-005.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{7D4DAD16-A5A9-04AB-06F9-E604F63034DA}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:36:47.000Z" pageLevel="1"><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-07-promoted-root/cold/read/page-006.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="{AABE6151-0F99-4BFA-B18C-88A0647B9742}{1}{B0}" name="Body automatic 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:36:47.000Z" pageLevel="1" lang="en-US"><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:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{1DC01B19-A733-441B-B34E-539E47253451}{14}{B0}"><one:Position x="36.0" y="14.40000057220459" z="0"/><one:Size width="174.3547973632812" height="13.42771625518799"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{1DC01B19-A733-441B-B34E-539E47253451}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body automatic &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-07-promoted-root/cold/read/page-007.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="{BA12FF12-6C6C-46A9-A596-E2FAF78B2E69}{1}{B0}" name="Renamed 🦋 é" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:36:47.000Z" pageLevel="1" lang="en-US"><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-09T03:09:34.000Z" lastModifiedTime="2026-09-09T03:09:34.000Z" objectID="{97EA1EA6-8AD7-41D9-B3E8-02B821DDAB16}{16}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Renamed &#129419; é]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{DC9D350C-E2EA-4D43-B6A8-9DD882BD1A28}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="170.2942504882812" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{DC9D350C-E2EA-4D43-B6A8-9DD882BD1A28}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body duplicate &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-07-promoted-root/cold/read/page-008.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="{D1F705B2-5A90-4C98-9A36-E0A160B2BA73}{1}{B0}" name="Body trailing 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:36:47.000Z" pageLevel="1" lang="en-US"><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-09T03:09:34.000Z" lastModifiedTime="2026-09-09T03:09:34.000Z" objectID="{9479143F-57DD-492A-8FE7-5CA12CAEAAC3}{16}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{40C625CF-7500-46A8-A863-82454635503F}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="160.1752014160156" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{40C625CF-7500-46A8-A863-82454635503F}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body trailing &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-07-promoted-root/cold/read/payloads.json created+3
......@@ -0,0 +1,3 @@
1[
2
3]
\ No newline at end of file
corpus/page-lifecycle/offline-edits-series/indent-07-promoted-root/cold/run.json created+18
......@@ -0,0 +1,18 @@
1{
2 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmpn_4nbhkc",
3 "expected_pages": 9,
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-lifecycle/offline-edits-series/indent-07-promoted-root/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-lifecycle/offline-edits-series/indent-07-promoted-root/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-lifecycle/offline-edits-series/indent-07-promoted-root/cold/source.json created+8
......@@ -0,0 +1,8 @@
1[
2 {
3 "path": "Lifecycle.one",
4 "bytes": 72360,
5 "sha256": "1ed669cc3afe6b391e13bab16f666b63900511499844b18e12a7e6f2abe89bad",
6 "mtime_ns": 1790522182573809675
7 }
8]
corpus/page-lifecycle/offline-edits-series/indent-07-promoted-root/cold/teardown.json created+1
......@@ -0,0 +1 @@
1{"absent": true}
corpus/page-lifecycle/offline-edits-series/indent-08-collapsed-group-move/candidate/Lifecycle.one created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/indent-08-collapsed-group-move/candidate/Lifecycle.one differ
corpus/page-lifecycle/offline-edits-series/indent-08-collapsed-group-move/candidate/manifest.json created+35
......@@ -0,0 +1,35 @@
1{
2 "confirmations": 0,
3 "conflict": true,
4 "mode": "indent",
5 "original": [
6 {
7 "guid": [
8 22,
9 254,
10 80,
11 182,
12 231,
13 93,
14 89,
15 72,
16 151,
17 171,
18 141,
19 14,
20 152,
21 171,
22 237,
23 165
24 ],
25 "level": 3,
26 "position": "Keep",
27 "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1"
28 }
29 ],
30 "page_receipt": "Some(Published { revision: ExGuid { guid: [153, 10, 0, 185, 105, 82, 19, 78, 149, 135, 202, 5, 72, 113, 230, 157], n: 1 } })",
31 "phase": "08-collapsed-group-move",
32 "publications": 1,
33 "reviewed": [],
34 "text_receipt": "Some(Published { revision: ExGuid { guid: [153, 10, 0, 185, 105, 82, 19, 78, 149, 135, 202, 5, 72, 113, 230, 157], n: 1 } })"
35}
\ No newline at end of file
corpus/page-lifecycle/offline-edits-series/indent-08-collapsed-group-move/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-FADEB6C0 -ExpectedPages 9", "exit": 0, "stdout": "Read 1 sections and 9 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-lifecycle/offline-edits-series/indent-08-collapsed-group-move/cold/machine.json created+1
......@@ -0,0 +1 @@
1{"name": "m6-fadeb6c0", "hostname": "ONE-M6-FADEB6C0"}
corpus/page-lifecycle/offline-edits-series/indent-08-collapsed-group-move/cold/notebook/Lifecycle.one created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/indent-08-collapsed-group-move/cold/notebook/Lifecycle.one differ
corpus/page-lifecycle/offline-edits-series/indent-08-collapsed-group-move/cold/notebook/Open Notebook.onetoc2 created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/indent-08-collapsed-group-move/cold/notebook/Open Notebook.onetoc2 differ
corpus/page-lifecycle/offline-edits-series/indent-08-collapsed-group-move/cold/read/environment.json created+7
......@@ -0,0 +1,7 @@
1{
2 "powershell": "5.1.14409.1005",
3 "schema": "xs2010",
4 "hostname": "ONE-M6-FADEB6C0",
5 "cold": true,
6 "onenote": "14.0.4763.1000"
7}
corpus/page-lifecycle/offline-edits-series/indent-08-collapsed-group-move/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="{9464F45B-94BB-48C8-8DCA-AE302DDEC667}{1}{B0}" path="C:\one-tests\runs\capture\notebook" lastModifiedTime="2026-09-27T15:36:49.000Z" color="#B49EDE"><one:Section name="Lifecycle" ID="{BDAE62B7-3C09-0F9F-28E4-14E6B245F6FB}{1}{B0}" path="C:\one-tests\runs\capture\notebook\Lifecycle.one" lastModifiedTime="2026-09-27T15:36:49.000Z" color="#91BAAE"><one:Page ID="{7EB6E168-6A79-4678-BAC9-328381539C09}{1}{B0}" name="child" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-09T06:04:26.000Z" pageLevel="1"/><one:Page ID="{236A23AB-F0B3-4827-A6EF-EA2FABE1C0DF}{1}{B0}" name="grandchild" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:36:49.000Z" pageLevel="3"/><one:Page ID="{5D943B42-7389-0798-3DF9-843E6B0FD46B}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:36:49.000Z" pageLevel="1"/><one:Page ID="{17F942B1-E322-0E0A-29BA-841F869F1F45}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:36:49.000Z" pageLevel="1"/><one:Page ID="{37F68382-EAFA-0928-3927-42EB7D2D3720}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:36:49.000Z" pageLevel="1"/><one:Page ID="{F0A9D186-233F-4B2A-9A48-46157C962D93}{1}{B0}" name="Renamed 🦋 é" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:36:49.000Z" pageLevel="1"/><one:Page ID="{9B4C2B26-15C3-411B-A5E8-444EEBAFB989}{1}{B0}" name="Body trailing 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:36:49.000Z" pageLevel="1"/><one:Page ID="{E0054FC5-40CA-4679-8E52-2C4FEF6694B8}{1}{B0}" name="Body automatic 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:36:49.000Z" pageLevel="1"/><one:Page ID="{233ACAFB-EC3F-4C7E-8424-0A57C57908F8}{1}{B0}" name="Same title" dateTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-09T06:03:25.000Z" pageLevel="1"/></one:Section></one:Notebook>
corpus/page-lifecycle/offline-edits-series/indent-08-collapsed-group-move/cold/read/page-000.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{17F942B1-E322-0E0A-29BA-841F869F1F45}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:36:49.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="17.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-09T03:09:19.000Z" lastModifiedTime="2026-09-09T03:09:19.000Z" objectID="{381D876A-4C77-0213-02D0-FCA1AAF9C1C7}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-08-collapsed-group-move/cold/read/page-001.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="{233ACAFB-EC3F-4C7E-8424-0A57C57908F8}{1}{B0}" name="Same title" dateTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-09T06:03:25.000Z" pageLevel="1" lang="en-US"><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-09T03:09:27.000Z" lastModifiedTime="2026-09-09T06:03:08.000Z" objectID="{21215381-B899-46EB-B61B-C058EB821645}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-27T15:05:58.000Z" objectID="{21215381-B899-46EB-B61B-C058EB821645}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="192.0257415771484" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-27T15:05:58.000Z" objectID="{21215381-B899-46EB-B61B-C058EB821645}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Offline Body parent &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-08-collapsed-group-move/cold/read/page-002.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="{236A23AB-F0B3-4827-A6EF-EA2FABE1C0DF}{1}{B0}" name="grandchild" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:36:49.000Z" pageLevel="3" lang="en-US"><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-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{B3BF0818-F189-4B88-9AEA-5AA78269A39E}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[grandchild]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{B3BF0818-F189-4B88-9AEA-5AA78269A39E}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="175.9715728759766" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{B3BF0818-F189-4B88-9AEA-5AA78269A39E}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body grandchild &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-08-collapsed-group-move/cold/read/page-003.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{37F68382-EAFA-0928-3927-42EB7D2D3720}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:36:49.000Z" pageLevel="1"><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-08-collapsed-group-move/cold/read/page-004.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{5D943B42-7389-0798-3DF9-843E6B0FD46B}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:36:49.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="17.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-09T03:09:19.000Z" lastModifiedTime="2026-09-09T03:09:19.000Z" objectID="{93E14A59-4F3C-0FFF-167E-DF0EF17C5894}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-08-collapsed-group-move/cold/read/page-005.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="{7EB6E168-6A79-4678-BAC9-328381539C09}{1}{B0}" name="child" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-09T06:04:26.000Z" pageLevel="1" lang="en-US"><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-09T03:09:29.000Z" lastModifiedTime="2026-09-09T06:03:46.000Z" objectID="{F4E2941B-8854-42D0-928E-2DD13AE845AD}{28}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[child]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T06:03:46.000Z" objectID="{F4E2941B-8854-42D0-928E-2DD13AE845AD}{35}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="149.6102294921875" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-09T06:03:46.000Z" objectID="{F4E2941B-8854-42D0-928E-2DD13AE845AD}{36}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body child &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-08-collapsed-group-move/cold/read/page-006.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="{9B4C2B26-15C3-411B-A5E8-444EEBAFB989}{1}{B0}" name="Body trailing 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:36:49.000Z" pageLevel="1" lang="en-US"><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-09T03:09:34.000Z" lastModifiedTime="2026-09-09T03:09:34.000Z" objectID="{DEC23AAB-188E-44A9-B039-F84EA7B3A939}{16}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{0A7D0B5B-3A53-4B2B-97BD-26AACD2853C5}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="160.1752014160156" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{0A7D0B5B-3A53-4B2B-97BD-26AACD2853C5}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body trailing &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-08-collapsed-group-move/cold/read/page-007.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="{E0054FC5-40CA-4679-8E52-2C4FEF6694B8}{1}{B0}" name="Body automatic 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:36:49.000Z" pageLevel="1" lang="en-US"><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:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{577B358D-E860-4998-8C90-F771CC3837AB}{14}{B0}"><one:Position x="36.0" y="14.40000057220459" z="0"/><one:Size width="174.3547973632812" height="13.42771625518799"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{577B358D-E860-4998-8C90-F771CC3837AB}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body automatic &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-08-collapsed-group-move/cold/read/page-008.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="{F0A9D186-233F-4B2A-9A48-46157C962D93}{1}{B0}" name="Renamed 🦋 é" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:36:49.000Z" pageLevel="1" lang="en-US"><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-09T03:09:34.000Z" lastModifiedTime="2026-09-09T03:09:34.000Z" objectID="{DD513032-C584-4C5A-8C36-A657AAC0A8EC}{16}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Renamed &#129419; é]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{96261B98-ADB9-40C0-8976-393709A019D2}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="170.2942504882812" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{96261B98-ADB9-40C0-8976-393709A019D2}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body duplicate &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-08-collapsed-group-move/cold/read/payloads.json created+3
......@@ -0,0 +1,3 @@
1[
2
3]
\ No newline at end of file
corpus/page-lifecycle/offline-edits-series/indent-08-collapsed-group-move/cold/run.json created+18
......@@ -0,0 +1,18 @@
1{
2 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmp3g6qdqvi",
3 "expected_pages": 9,
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-lifecycle/offline-edits-series/indent-08-collapsed-group-move/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-lifecycle/offline-edits-series/indent-08-collapsed-group-move/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-lifecycle/offline-edits-series/indent-08-collapsed-group-move/cold/source.json created+8
......@@ -0,0 +1,8 @@
1[
2 {
3 "path": "Lifecycle.one",
4 "bytes": 73840,
5 "sha256": "18ac2501a9fd0d09d043b23d41f6d3a04a47c3866f9fd8114c2a76c773d71fcd",
6 "mtime_ns": 1790522182570877495
7 }
8]
corpus/page-lifecycle/offline-edits-series/indent-08-collapsed-group-move/cold/teardown.json created+1
......@@ -0,0 +1 @@
1{"absent": true}
corpus/page-lifecycle/offline-edits-series/indent-single-page/candidate/Lifecycle.one created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/indent-single-page/candidate/Lifecycle.one differ
corpus/page-lifecycle/offline-edits-series/indent-single-page/candidate/manifest.json created+35
......@@ -0,0 +1,35 @@
1{
2 "confirmations": 0,
3 "conflict": true,
4 "mode": "indent",
5 "original": [
6 {
7 "guid": [
8 5,
9 235,
10 87,
11 66,
12 187,
13 139,
14 97,
15 68,
16 186,
17 227,
18 174,
19 187,
20 142,
21 150,
22 54,
23 216
24 ],
25 "level": 3,
26 "position": "Keep",
27 "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1"
28 }
29 ],
30 "page_receipt": "Some(Published { revision: ExGuid { guid: [141, 54, 145, 86, 191, 101, 228, 72, 142, 5, 46, 211, 83, 3, 119, 106], n: 1 } })",
31 "phase": "single-page",
32 "publications": 1,
33 "reviewed": [],
34 "text_receipt": "Some(Published { revision: ExGuid { guid: [141, 54, 145, 86, 191, 101, 228, 72, 142, 5, 46, 211, 83, 3, 119, 106], n: 1 } })"
35}
\ No newline at end of file
corpus/page-lifecycle/offline-edits-series/indent-single-page/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-B0D47B05 -ExpectedPages 9", "exit": 0, "stdout": "Read 1 sections and 9 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-lifecycle/offline-edits-series/indent-single-page/cold/machine.json created+1
......@@ -0,0 +1 @@
1{"name": "m6-b0d47b05", "hostname": "ONE-M6-B0D47B05"}
corpus/page-lifecycle/offline-edits-series/indent-single-page/cold/notebook/Lifecycle.one created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/indent-single-page/cold/notebook/Lifecycle.one differ
corpus/page-lifecycle/offline-edits-series/indent-single-page/cold/notebook/Open Notebook.onetoc2 created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/indent-single-page/cold/notebook/Open Notebook.onetoc2 differ
corpus/page-lifecycle/offline-edits-series/indent-single-page/cold/read/environment.json created+7
......@@ -0,0 +1,7 @@
1{
2 "powershell": "5.1.14409.1005",
3 "schema": "xs2010",
4 "hostname": "ONE-M6-B0D47B05",
5 "cold": true,
6 "onenote": "14.0.4763.1000"
7}
corpus/page-lifecycle/offline-edits-series/indent-single-page/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="{38679D2F-552A-4019-AF83-685AE597E427}{1}{B0}" path="C:\one-tests\runs\capture\notebook" lastModifiedTime="2026-09-27T15:36:57.000Z" color="#B49EDE"><one:Section name="Lifecycle" ID="{921A7E3C-CF2C-00BC-278B-3F5750EC3E97}{1}{B0}" path="C:\one-tests\runs\capture\notebook\Lifecycle.one" lastModifiedTime="2026-09-27T15:36:57.000Z" color="#91BAAE"><one:Page ID="{722027C9-80AC-08BB-3296-AF8F89A61C07}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:36:57.000Z" pageLevel="1"/><one:Page ID="{384D5E3A-1007-0129-26D5-AFAE6436D729}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:36:57.000Z" pageLevel="1"/><one:Page ID="{18429F09-19DF-060B-3648-695A9F84FF4C}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:36:57.000Z" pageLevel="1"/><one:Page ID="{5102FDE3-995C-495B-B5A6-193263FA5465}{1}{B0}" name="child" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:36:57.000Z" pageLevel="2"/><one:Page ID="{0CDE3F20-0396-4704-A980-C19E494808B3}{1}{B0}" name="grandchild" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:36:57.000Z" pageLevel="3"/><one:Page ID="{DF1DCD0D-D01A-4409-9527-6DA49E3FE5FF}{1}{B0}" name="Renamed 🦋 é" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:36:57.000Z" pageLevel="1"/><one:Page ID="{B4F837AD-E6E6-4E38-AA87-6FFF090671E5}{1}{B0}" name="Body trailing 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:36:57.000Z" pageLevel="1"/><one:Page ID="{CFB1534E-B3EF-495A-813D-07FE0DCF5CD4}{1}{B0}" name="Body automatic 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:36:57.000Z" pageLevel="1"/><one:Page ID="{0C8ED670-1F1A-435D-8B4B-21E627D0C094}{1}{B0}" name="Same title" dateTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-09T05:49:01.000Z" pageLevel="1"/></one:Section></one:Notebook>
corpus/page-lifecycle/offline-edits-series/indent-single-page/cold/read/page-000.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="{0C8ED670-1F1A-435D-8B4B-21E627D0C094}{1}{B0}" name="Same title" dateTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-09T05:49:01.000Z" pageLevel="1" lang="en-US"><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-09T03:09:27.000Z" lastModifiedTime="2026-09-09T05:48:48.000Z" objectID="{0E954F0A-4BBC-49C8-B974-EBE9092BDE29}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-27T15:05:58.000Z" objectID="{0E954F0A-4BBC-49C8-B974-EBE9092BDE29}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="192.0257415771484" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-27T15:05:58.000Z" objectID="{0E954F0A-4BBC-49C8-B974-EBE9092BDE29}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Offline Body parent &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-single-page/cold/read/page-001.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="{0CDE3F20-0396-4704-A980-C19E494808B3}{1}{B0}" name="grandchild" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:36:57.000Z" pageLevel="3" lang="en-US"><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-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{9C0B1493-02AC-44AB-9585-711660C06BF2}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[grandchild]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{9C0B1493-02AC-44AB-9585-711660C06BF2}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="175.9715728759766" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{9C0B1493-02AC-44AB-9585-711660C06BF2}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body grandchild &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-single-page/cold/read/page-002.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{18429F09-19DF-060B-3648-695A9F84FF4C}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:36:57.000Z" pageLevel="1"><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-single-page/cold/read/page-003.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{384D5E3A-1007-0129-26D5-AFAE6436D729}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:36:57.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="17.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-09T03:09:19.000Z" lastModifiedTime="2026-09-09T03:09:19.000Z" objectID="{17A99BE1-BF52-0D30-0DBF-D710485009AB}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-single-page/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="{5102FDE3-995C-495B-B5A6-193263FA5465}{1}{B0}" name="child" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:36:57.000Z" pageLevel="2" lang="en-US"><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-09T03:09:29.000Z" lastModifiedTime="2026-09-09T03:09:29.000Z" objectID="{DB568890-7B71-4DF3-9DE1-0660D8418DC1}{28}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[child]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{DB568890-7B71-4DF3-9DE1-0660D8418DC1}{35}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="149.6102294921875" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-09T03:09:29.000Z" objectID="{DB568890-7B71-4DF3-9DE1-0660D8418DC1}{36}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body child &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-single-page/cold/read/page-005.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{722027C9-80AC-08BB-3296-AF8F89A61C07}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:36:57.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="17.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-09T03:09:19.000Z" lastModifiedTime="2026-09-09T03:09:19.000Z" objectID="{BC5556D2-BC19-00DC-1911-F4BF13D590F8}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-single-page/cold/read/page-006.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="{B4F837AD-E6E6-4E38-AA87-6FFF090671E5}{1}{B0}" name="Body trailing 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:36:57.000Z" pageLevel="1" lang="en-US"><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-09T03:09:34.000Z" lastModifiedTime="2026-09-09T03:09:34.000Z" objectID="{F1762620-EBAB-4B8A-BF56-D3FF451A6155}{16}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{25C917D0-C976-4408-98D2-0D1B2F819BA9}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="160.1752014160156" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{25C917D0-C976-4408-98D2-0D1B2F819BA9}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body trailing &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-single-page/cold/read/page-007.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="{CFB1534E-B3EF-495A-813D-07FE0DCF5CD4}{1}{B0}" name="Body automatic 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:36:57.000Z" pageLevel="1" lang="en-US"><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:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{78CF2906-1B45-46BB-83FF-DCC02E91FFC7}{14}{B0}"><one:Position x="36.0" y="14.40000057220459" z="0"/><one:Size width="174.3547973632812" height="13.42771625518799"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{78CF2906-1B45-46BB-83FF-DCC02E91FFC7}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body automatic &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-single-page/cold/read/page-008.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="{DF1DCD0D-D01A-4409-9527-6DA49E3FE5FF}{1}{B0}" name="Renamed 🦋 é" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:36:57.000Z" pageLevel="1" lang="en-US"><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-09T03:09:34.000Z" lastModifiedTime="2026-09-09T03:09:34.000Z" objectID="{F2E52CB9-36A1-4379-8359-8DE648696080}{16}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Renamed &#129419; é]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{B9920713-5E9C-4FE3-8619-1286EB09D1BE}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="170.2942504882812" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{B9920713-5E9C-4FE3-8619-1286EB09D1BE}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body duplicate &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/indent-single-page/cold/read/payloads.json created+3
......@@ -0,0 +1,3 @@
1[
2
3]
\ No newline at end of file
corpus/page-lifecycle/offline-edits-series/indent-single-page/cold/run.json created+18
......@@ -0,0 +1,18 @@
1{
2 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmp7q_s9zzh",
3 "expected_pages": 9,
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-lifecycle/offline-edits-series/indent-single-page/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-lifecycle/offline-edits-series/indent-single-page/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-lifecycle/offline-edits-series/indent-single-page/cold/source.json created+8
......@@ -0,0 +1,8 @@
1[
2 {
3 "path": "Lifecycle.one",
4 "bytes": 63080,
5 "sha256": "81f1eecbaee6e55e8a6c3af4eb875fe943ab387e7b1e0c6ea76a32d7ed01d5b8",
6 "mtime_ns": 1790522182589020156
7 }
8]
corpus/page-lifecycle/offline-edits-series/indent-single-page/cold/teardown.json created+1
......@@ -0,0 +1 @@
1{"absent": true}
corpus/page-lifecycle/offline-edits-series/provenance.json created+674
......@@ -0,0 +1,674 @@
1{
2 "generator": [
3 "crates/notebook/tests/sync_pages.rs::native_page_changes_reconcile_with_atomic_offline_batches",
4 "crates/notebook/tests/sync_pages.rs::twelve_disjoint_page_batches_merge_with_dependent_bodies_without_review"
5 ],
6 "evidence": "evidence/series",
7 "cold": {
8 "group-01-demoted-parent": {
9 "run": {
10 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmpxbgzk4zk",
11 "expected_pages": 9,
12 "author": null,
13 "author_timeout_seconds": 600,
14 "inspect": false,
15 "collect_notebook": true,
16 "base": {
17 "file": "win7-office-base.qcow2",
18 "format": "qcow2",
19 "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346",
20 "virtual_size": 68719476736
21 },
22 "scripts": {
23 "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331",
24 "read.ps1": "04013bfcccee40a17e2a225f9b9e96f40a3a8daad9e350609654f8eda3ccbb41"
25 }
26 },
27 "machine": {
28 "name": "m6-228507e9",
29 "hostname": "ONE-M6-228507E9"
30 },
31 "teardown": {
32 "absent": true
33 },
34 "source": [
35 {
36 "path": "Lifecycle.one",
37 "bytes": 58888,
38 "sha256": "9a3b4662022dc604139192a1ce6e89e0a86fb2f4f28d612d0b21fc39cbb0321b",
39 "mtime_ns": 1790522182582306261
40 }
41 ]
42 },
43 "group-02-promoted-parent": {
44 "run": {
45 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmp2tw32xod",
46 "expected_pages": 9,
47 "author": null,
48 "author_timeout_seconds": 600,
49 "inspect": false,
50 "collect_notebook": true,
51 "base": {
52 "file": "win7-office-base.qcow2",
53 "format": "qcow2",
54 "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346",
55 "virtual_size": 68719476736
56 },
57 "scripts": {
58 "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331",
59 "read.ps1": "04013bfcccee40a17e2a225f9b9e96f40a3a8daad9e350609654f8eda3ccbb41"
60 }
61 },
62 "machine": {
63 "name": "m6-59e6b833",
64 "hostname": "ONE-M6-59E6B833"
65 },
66 "teardown": {
67 "absent": true
68 },
69 "source": [
70 {
71 "path": "Lifecycle.one",
72 "bytes": 60864,
73 "sha256": "dac0d3baff9cba15171a7a49ad5e3fe5ae4f1d9486a282f73eca7bf12a4302cf",
74 "mtime_ns": 1790522182571809194
75 }
76 ]
77 },
78 "group-03-selected-group-move": {
79 "run": {
80 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmpqu8gvf97",
81 "expected_pages": 9,
82 "author": null,
83 "author_timeout_seconds": 600,
84 "inspect": false,
85 "collect_notebook": true,
86 "base": {
87 "file": "win7-office-base.qcow2",
88 "format": "qcow2",
89 "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346",
90 "virtual_size": 68719476736
91 },
92 "scripts": {
93 "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331",
94 "read.ps1": "04013bfcccee40a17e2a225f9b9e96f40a3a8daad9e350609654f8eda3ccbb41"
95 }
96 },
97 "machine": {
98 "name": "m6-2f0cfd28",
99 "hostname": "ONE-M6-2F0CFD28"
100 },
101 "teardown": {
102 "absent": true
103 },
104 "source": [
105 {
106 "path": "Lifecycle.one",
107 "bytes": 62448,
108 "sha256": "e8227277e0b943d76ff7f1317a204bc1c90d83edb14d57c1e4fc4b6025572d5a",
109 "mtime_ns": 1790522182601367622
110 }
111 ]
112 },
113 "group-04-subpage-move": {
114 "run": {
115 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmp6no75z1i",
116 "expected_pages": 9,
117 "author": null,
118 "author_timeout_seconds": 600,
119 "inspect": false,
120 "collect_notebook": true,
121 "base": {
122 "file": "win7-office-base.qcow2",
123 "format": "qcow2",
124 "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346",
125 "virtual_size": 68719476736
126 },
127 "scripts": {
128 "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331",
129 "read.ps1": "04013bfcccee40a17e2a225f9b9e96f40a3a8daad9e350609654f8eda3ccbb41"
130 }
131 },
132 "machine": {
133 "name": "m6-1f7db150",
134 "hostname": "ONE-M6-1F7DB150"
135 },
136 "teardown": {
137 "absent": true
138 },
139 "source": [
140 {
141 "path": "Lifecycle.one",
142 "bytes": 65000,
143 "sha256": "44eca1c10b54a10f3b8d08487d222d94aaac3b9a28f6b6f52ffd5d0d702aaf63",
144 "mtime_ns": 1790522182581472144
145 }
146 ]
147 },
148 "group-05-insert-before-subpage": {
149 "run": {
150 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmpy26z3j6d",
151 "expected_pages": 9,
152 "author": null,
153 "author_timeout_seconds": 600,
154 "inspect": false,
155 "collect_notebook": true,
156 "base": {
157 "file": "win7-office-base.qcow2",
158 "format": "qcow2",
159 "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346",
160 "virtual_size": 68719476736
161 },
162 "scripts": {
163 "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331",
164 "read.ps1": "04013bfcccee40a17e2a225f9b9e96f40a3a8daad9e350609654f8eda3ccbb41"
165 }
166 },
167 "machine": {
168 "name": "m6-4a72e5a4",
169 "hostname": "ONE-M6-4A72E5A4"
170 },
171 "teardown": {
172 "absent": true
173 },
174 "source": [
175 {
176 "path": "Lifecycle.one",
177 "bytes": 66944,
178 "sha256": "2f144e06946d6424cb548a4b51fdd58c2be2be35fb93ddb8f80808dce7ef8ed8",
179 "mtime_ns": 1790522182575647033
180 }
181 ]
182 },
183 "group-06-promoted-level-two": {
184 "run": {
185 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmp7i0tqm4j",
186 "expected_pages": 9,
187 "author": null,
188 "author_timeout_seconds": 600,
189 "inspect": false,
190 "collect_notebook": true,
191 "base": {
192 "file": "win7-office-base.qcow2",
193 "format": "qcow2",
194 "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346",
195 "virtual_size": 68719476736
196 },
197 "scripts": {
198 "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331",
199 "read.ps1": "04013bfcccee40a17e2a225f9b9e96f40a3a8daad9e350609654f8eda3ccbb41"
200 }
201 },
202 "machine": {
203 "name": "m6-2d9428ea",
204 "hostname": "ONE-M6-2D9428EA"
205 },
206 "teardown": {
207 "absent": true
208 },
209 "source": [
210 {
211 "path": "Lifecycle.one",
212 "bytes": 70296,
213 "sha256": "30860c7715ac247a1f77d1d0c8c27edfcc248e719183cb7990381f5ad5230d89",
214 "mtime_ns": 1790522182588156289
215 }
216 ]
217 },
218 "group-07-promoted-root": {
219 "run": {
220 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmpfsvvpr33",
221 "expected_pages": 9,
222 "author": null,
223 "author_timeout_seconds": 600,
224 "inspect": false,
225 "collect_notebook": true,
226 "base": {
227 "file": "win7-office-base.qcow2",
228 "format": "qcow2",
229 "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346",
230 "virtual_size": 68719476736
231 },
232 "scripts": {
233 "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331",
234 "read.ps1": "04013bfcccee40a17e2a225f9b9e96f40a3a8daad9e350609654f8eda3ccbb41"
235 }
236 },
237 "machine": {
238 "name": "m6-a2c6ce60",
239 "hostname": "ONE-M6-A2C6CE60"
240 },
241 "teardown": {
242 "absent": true
243 },
244 "source": [
245 {
246 "path": "Lifecycle.one",
247 "bytes": 72360,
248 "sha256": "550991e8db44ff19e287605df0548e26e03d5f4b02ea3c56b37206fd4a122974",
249 "mtime_ns": 1790522182583277710
250 }
251 ]
252 },
253 "group-08-collapsed-group-move": {
254 "run": {
255 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmpfwhuw46n",
256 "expected_pages": 9,
257 "author": null,
258 "author_timeout_seconds": 600,
259 "inspect": false,
260 "collect_notebook": true,
261 "base": {
262 "file": "win7-office-base.qcow2",
263 "format": "qcow2",
264 "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346",
265 "virtual_size": 68719476736
266 },
267 "scripts": {
268 "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331",
269 "read.ps1": "04013bfcccee40a17e2a225f9b9e96f40a3a8daad9e350609654f8eda3ccbb41"
270 }
271 },
272 "machine": {
273 "name": "m6-150cfda8",
274 "hostname": "ONE-M6-150CFDA8"
275 },
276 "teardown": {
277 "absent": true
278 },
279 "source": [
280 {
281 "path": "Lifecycle.one",
282 "bytes": 73840,
283 "sha256": "b68abccdc4c7c98c65311b2924f3903540b22c7f6e0bb8153b31bbe34fdf2c05",
284 "mtime_ns": 1790522182560292804
285 }
286 ]
287 },
288 "group-single-page": {
289 "run": {
290 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmp3_04860j",
291 "expected_pages": 9,
292 "author": null,
293 "author_timeout_seconds": 600,
294 "inspect": false,
295 "collect_notebook": true,
296 "base": {
297 "file": "win7-office-base.qcow2",
298 "format": "qcow2",
299 "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346",
300 "virtual_size": 68719476736
301 },
302 "scripts": {
303 "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331",
304 "read.ps1": "04013bfcccee40a17e2a225f9b9e96f40a3a8daad9e350609654f8eda3ccbb41"
305 }
306 },
307 "machine": {
308 "name": "m6-93a16790",
309 "hostname": "ONE-M6-93A16790"
310 },
311 "teardown": {
312 "absent": true
313 },
314 "source": [
315 {
316 "path": "Lifecycle.one",
317 "bytes": 63080,
318 "sha256": "58f87ab34c5e56426faed56429ab10a15e3df0673851e8c9b4587cb107a13295",
319 "mtime_ns": 1790522182573126515
320 }
321 ]
322 },
323 "indent-01-demoted-parent": {
324 "run": {
325 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmppgtomrlh",
326 "expected_pages": 9,
327 "author": null,
328 "author_timeout_seconds": 600,
329 "inspect": false,
330 "collect_notebook": true,
331 "base": {
332 "file": "win7-office-base.qcow2",
333 "format": "qcow2",
334 "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346",
335 "virtual_size": 68719476736
336 },
337 "scripts": {
338 "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331",
339 "read.ps1": "04013bfcccee40a17e2a225f9b9e96f40a3a8daad9e350609654f8eda3ccbb41"
340 }
341 },
342 "machine": {
343 "name": "m6-2b44159d",
344 "hostname": "ONE-M6-2B44159D"
345 },
346 "teardown": {
347 "absent": true
348 },
349 "source": [
350 {
351 "path": "Lifecycle.one",
352 "bytes": 58888,
353 "sha256": "c19272d0b0a52889647b23a6eb10381e7d90d5d5d7ca2ad3be868aa585a8b21c",
354 "mtime_ns": 1790522182595778175
355 }
356 ]
357 },
358 "indent-02-promoted-parent": {
359 "run": {
360 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmpsa22lkkc",
361 "expected_pages": 9,
362 "author": null,
363 "author_timeout_seconds": 600,
364 "inspect": false,
365 "collect_notebook": true,
366 "base": {
367 "file": "win7-office-base.qcow2",
368 "format": "qcow2",
369 "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346",
370 "virtual_size": 68719476736
371 },
372 "scripts": {
373 "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331",
374 "read.ps1": "04013bfcccee40a17e2a225f9b9e96f40a3a8daad9e350609654f8eda3ccbb41"
375 }
376 },
377 "machine": {
378 "name": "m6-3f9d5e9e",
379 "hostname": "ONE-M6-3F9D5E9E"
380 },
381 "teardown": {
382 "absent": true
383 },
384 "source": [
385 {
386 "path": "Lifecycle.one",
387 "bytes": 60864,
388 "sha256": "02983cdd10e8f6ac52dfdd27ef63858d4d3351c2c78822c0f5c20794298fb0ca",
389 "mtime_ns": 1790522182572487438
390 }
391 ]
392 },
393 "indent-03-selected-group-move": {
394 "run": {
395 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmpb5gki0t4",
396 "expected_pages": 9,
397 "author": null,
398 "author_timeout_seconds": 600,
399 "inspect": false,
400 "collect_notebook": true,
401 "base": {
402 "file": "win7-office-base.qcow2",
403 "format": "qcow2",
404 "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346",
405 "virtual_size": 68719476736
406 },
407 "scripts": {
408 "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331",
409 "read.ps1": "04013bfcccee40a17e2a225f9b9e96f40a3a8daad9e350609654f8eda3ccbb41"
410 }
411 },
412 "machine": {
413 "name": "m6-6def4909",
414 "hostname": "ONE-M6-6DEF4909"
415 },
416 "teardown": {
417 "absent": true
418 },
419 "source": [
420 {
421 "path": "Lifecycle.one",
422 "bytes": 62448,
423 "sha256": "62f0d051077351cfee81931153467cbf510700e94b46347a78e287801943f37c",
424 "mtime_ns": 1790522182574538544
425 }
426 ]
427 },
428 "indent-04-subpage-move": {
429 "run": {
430 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmplfmc8y5c",
431 "expected_pages": 9,
432 "author": null,
433 "author_timeout_seconds": 600,
434 "inspect": false,
435 "collect_notebook": true,
436 "base": {
437 "file": "win7-office-base.qcow2",
438 "format": "qcow2",
439 "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346",
440 "virtual_size": 68719476736
441 },
442 "scripts": {
443 "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331",
444 "read.ps1": "04013bfcccee40a17e2a225f9b9e96f40a3a8daad9e350609654f8eda3ccbb41"
445 }
446 },
447 "machine": {
448 "name": "m6-3cf1ad85",
449 "hostname": "ONE-M6-3CF1AD85"
450 },
451 "teardown": {
452 "absent": true
453 },
454 "source": [
455 {
456 "path": "Lifecycle.one",
457 "bytes": 65000,
458 "sha256": "e61b424191b7ddde476e498953e5fedb01566f5fdcf5ec5ad85b75dc81ae4b81",
459 "mtime_ns": 1790522182580783526
460 }
461 ]
462 },
463 "indent-05-insert-before-subpage": {
464 "run": {
465 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmp3bp2l4t4",
466 "expected_pages": 9,
467 "author": null,
468 "author_timeout_seconds": 600,
469 "inspect": false,
470 "collect_notebook": true,
471 "base": {
472 "file": "win7-office-base.qcow2",
473 "format": "qcow2",
474 "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346",
475 "virtual_size": 68719476736
476 },
477 "scripts": {
478 "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331",
479 "read.ps1": "04013bfcccee40a17e2a225f9b9e96f40a3a8daad9e350609654f8eda3ccbb41"
480 }
481 },
482 "machine": {
483 "name": "m6-c302208f",
484 "hostname": "ONE-M6-C302208F"
485 },
486 "teardown": {
487 "absent": true
488 },
489 "source": [
490 {
491 "path": "Lifecycle.one",
492 "bytes": 66944,
493 "sha256": "b1f5d19ffee4ff89ab2a14066a729b5585179339be2b18227f92c0bf2b44c42e",
494 "mtime_ns": 1790522182565951458
495 }
496 ]
497 },
498 "indent-06-promoted-level-two": {
499 "run": {
500 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmpjja19zue",
501 "expected_pages": 9,
502 "author": null,
503 "author_timeout_seconds": 600,
504 "inspect": false,
505 "collect_notebook": true,
506 "base": {
507 "file": "win7-office-base.qcow2",
508 "format": "qcow2",
509 "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346",
510 "virtual_size": 68719476736
511 },
512 "scripts": {
513 "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331",
514 "read.ps1": "04013bfcccee40a17e2a225f9b9e96f40a3a8daad9e350609654f8eda3ccbb41"
515 }
516 },
517 "machine": {
518 "name": "m6-bc497350",
519 "hostname": "ONE-M6-BC497350"
520 },
521 "teardown": {
522 "absent": true
523 },
524 "source": [
525 {
526 "path": "Lifecycle.one",
527 "bytes": 70296,
528 "sha256": "8fa8fc3275cfb17da80d2f9e08baebd8c70b8489b5721460e17c771998226876",
529 "mtime_ns": 1790522182589845898
530 }
531 ]
532 },
533 "indent-07-promoted-root": {
534 "run": {
535 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmpn_4nbhkc",
536 "expected_pages": 9,
537 "author": null,
538 "author_timeout_seconds": 600,
539 "inspect": false,
540 "collect_notebook": true,
541 "base": {
542 "file": "win7-office-base.qcow2",
543 "format": "qcow2",
544 "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346",
545 "virtual_size": 68719476736
546 },
547 "scripts": {
548 "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331",
549 "read.ps1": "04013bfcccee40a17e2a225f9b9e96f40a3a8daad9e350609654f8eda3ccbb41"
550 }
551 },
552 "machine": {
553 "name": "m6-90980d00",
554 "hostname": "ONE-M6-90980D00"
555 },
556 "teardown": {
557 "absent": true
558 },
559 "source": [
560 {
561 "path": "Lifecycle.one",
562 "bytes": 72360,
563 "sha256": "1ed669cc3afe6b391e13bab16f666b63900511499844b18e12a7e6f2abe89bad",
564 "mtime_ns": 1790522182573809675
565 }
566 ]
567 },
568 "indent-08-collapsed-group-move": {
569 "run": {
570 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmp3g6qdqvi",
571 "expected_pages": 9,
572 "author": null,
573 "author_timeout_seconds": 600,
574 "inspect": false,
575 "collect_notebook": true,
576 "base": {
577 "file": "win7-office-base.qcow2",
578 "format": "qcow2",
579 "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346",
580 "virtual_size": 68719476736
581 },
582 "scripts": {
583 "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331",
584 "read.ps1": "04013bfcccee40a17e2a225f9b9e96f40a3a8daad9e350609654f8eda3ccbb41"
585 }
586 },
587 "machine": {
588 "name": "m6-fadeb6c0",
589 "hostname": "ONE-M6-FADEB6C0"
590 },
591 "teardown": {
592 "absent": true
593 },
594 "source": [
595 {
596 "path": "Lifecycle.one",
597 "bytes": 73840,
598 "sha256": "18ac2501a9fd0d09d043b23d41f6d3a04a47c3866f9fd8114c2a76c773d71fcd",
599 "mtime_ns": 1790522182570877495
600 }
601 ]
602 },
603 "indent-single-page": {
604 "run": {
605 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmp7q_s9zzh",
606 "expected_pages": 9,
607 "author": null,
608 "author_timeout_seconds": 600,
609 "inspect": false,
610 "collect_notebook": true,
611 "base": {
612 "file": "win7-office-base.qcow2",
613 "format": "qcow2",
614 "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346",
615 "virtual_size": 68719476736
616 },
617 "scripts": {
618 "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331",
619 "read.ps1": "04013bfcccee40a17e2a225f9b9e96f40a3a8daad9e350609654f8eda3ccbb41"
620 }
621 },
622 "machine": {
623 "name": "m6-b0d47b05",
624 "hostname": "ONE-M6-B0D47B05"
625 },
626 "teardown": {
627 "absent": true
628 },
629 "source": [
630 {
631 "path": "Lifecycle.one",
632 "bytes": 63080,
633 "sha256": "81f1eecbaee6e55e8a6c3af4eb875fe943ab387e7b1e0c6ea76a32d7ed01d5b8",
634 "mtime_ns": 1790522182589020156
635 }
636 ]
637 },
638 "twelve-clients": {
639 "run": {
640 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmpqs9m09lz",
641 "expected_pages": 37,
642 "author": null,
643 "author_timeout_seconds": 600,
644 "inspect": false,
645 "collect_notebook": true,
646 "base": {
647 "file": "win7-office-base.qcow2",
648 "format": "qcow2",
649 "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346",
650 "virtual_size": 68719476736
651 },
652 "scripts": {
653 "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331",
654 "read.ps1": "04013bfcccee40a17e2a225f9b9e96f40a3a8daad9e350609654f8eda3ccbb41"
655 }
656 },
657 "machine": {
658 "name": "m6-d9f15303",
659 "hostname": "ONE-M6-D9F15303"
660 },
661 "teardown": {
662 "absent": true
663 },
664 "source": [
665 {
666 "path": "pages.one",
667 "bytes": 159240,
668 "sha256": "dba31b100d591e034dd53a5eaca768b2d104c6c7e005c1ab9d3fee9a9791bcfd",
669 "mtime_ns": 1790522182609793250
670 }
671 ]
672 }
673 }
674}
corpus/page-lifecycle/offline-edits-series/twelve-clients/candidate/manifest.json created+2304
......@@ -0,0 +1,2304 @@
1{
2 "expected_order": [
3 [
4 "{7F455609-2BEF-4BCB-A94A-0FEECE61F2D1},1",
5 1
6 ],
7 [
8 "{B9E9B75B-7B33-4C60-A3D1-0BE78F314485},1",
9 1
10 ],
11 [
12 "{C4B5EAED-3ABF-4B34-A1B5-06C8A6E2259F},1",
13 1
14 ],
15 [
16 "{1C26F613-1AD8-417F-837C-6A2EB606D092},1",
17 2
18 ],
19 [
20 "{F31C990F-D1E1-4840-BB4F-46ED372732A9},1",
21 1
22 ],
23 [
24 "{021A914B-C467-4FDE-BF44-B4D695410F0B},1",
25 1
26 ],
27 [
28 "{B0559E07-BA1D-4B20-B7AA-906C04AA5DFE},1",
29 2
30 ],
31 [
32 "{544121FD-0E61-4A76-8191-A02ABA23A314},1",
33 1
34 ],
35 [
36 "{4A597354-6867-49AB-B740-4C1E39E40E2E},1",
37 1
38 ],
39 [
40 "{7F7E3DAF-B98B-4BBD-9EB2-4534A3C74123},1",
41 2
42 ],
43 [
44 "{303BACE6-CEFC-4107-AC1E-D6F3BBC7D1AE},1",
45 1
46 ],
47 [
48 "{8D4454DE-21E6-49FB-9438-B48408E348E4},1",
49 1
50 ],
51 [
52 "{214F33C4-3F0A-4CEF-9BC9-F8D69687830E},1",
53 2
54 ],
55 [
56 "{CE4D4557-358A-4401-8426-C7C794F5F2BE},1",
57 1
58 ],
59 [
60 "{64E10720-B6D7-46D7-B810-BA636020102D},1",
61 1
62 ],
63 [
64 "{FF359729-6EDF-4577-A968-7774CD55FB52},1",
65 2
66 ],
67 [
68 "{3E3C7041-7C7E-4104-8755-CE045D331F8F},1",
69 1
70 ],
71 [
72 "{3DDB5E8B-3245-43D0-B001-93E5BC5C8374},1",
73 1
74 ],
75 [
76 "{7B267536-B0AE-4744-B0E4-C5628174834D},1",
77 2
78 ],
79 [
80 "{1F097AAE-D72E-4A7A-8359-6DCE136F0E21},1",
81 1
82 ],
83 [
84 "{BC956E6C-D057-409D-A618-A6BF06DD9AFC},1",
85 1
86 ],
87 [
88 "{39C7177D-715E-417F-A5B2-596DCDE13027},1",
89 2
90 ],
91 [
92 "{2C70EAEB-A51D-448F-8955-89156506CF95},1",
93 1
94 ],
95 [
96 "{F924B8C7-66CA-4FEA-ADD7-5ECD6910D5AA},1",
97 1
98 ],
99 [
100 "{95B02C61-106C-47DC-AC71-563A6AE3F6BE},1",
101 2
102 ],
103 [
104 "{907D9244-8140-4F4C-8BA9-6E42C8F2F5CC},1",
105 1
106 ],
107 [
108 "{232109B4-E38E-4D7A-AB6B-2C52BCD49511},1",
109 1
110 ],
111 [
112 "{1A4EE170-3A3E-4E9E-9CDC-8DD17C510B26},1",
113 2
114 ],
115 [
116 "{8679521F-8046-4611-A5A3-AB151635E26D},1",
117 1
118 ],
119 [
120 "{CF289176-0CDB-4163-8A44-C51958D8B8A1},1",
121 1
122 ],
123 [
124 "{99334A81-D662-4AC6-A49D-A0860B4E0DD8},1",
125 2
126 ],
127 [
128 "{7BAB3EDA-868E-4B41-AD61-B32D463AB3E0},1",
129 1
130 ],
131 [
132 "{BDFF266F-D35B-4408-B624-B3C5DE9DECED},1",
133 1
134 ],
135 [
136 "{458A27E7-608E-467D-87C0-540AA0AF5AB6},1",
137 2
138 ],
139 [
140 "{9F7A4423-B568-4CA7-BE9D-8003FAF044AD},1",
141 1
142 ],
143 [
144 "{2EDB6F23-646D-4B69-A92A-14293B52E874},1",
145 1
146 ],
147 [
148 "{E455C07B-77AB-4D41-91AE-3CAD15027F85},1",
149 2
150 ]
151 ],
152 "operations": [
153 [
154 {
155 "edit": {
156 "at": 133000000000000000,
157 "ops": [
158 {
159 "Section": {
160 "Pages": [
161 {
162 "guid": [
163 137,
164 65,
165 46,
166 153,
167 28,
168 23,
169 191,
170 78,
171 179,
172 39,
173 162,
174 124,
175 151,
176 204,
177 247,
178 54
179 ],
180 "level": 1,
181 "position": {
182 "Before": "{C4B5EAED-3ABF-4B34-A1B5-06C8A6E2259F},1"
183 },
184 "space": "{B9E9B75B-7B33-4C60-A3D1-0BE78F314485},1"
185 },
186 {
187 "guid": [
188 214,
189 18,
190 186,
191 71,
192 69,
193 135,
194 163,
195 67,
196 162,
197 241,
198 219,
199 185,
200 146,
201 144,
202 160,
203 212
204 ],
205 "level": 2,
206 "position": "Keep",
207 "space": "{1C26F613-1AD8-417F-837C-6A2EB606D092},1"
208 }
209 ]
210 }
211 }
212 ]
213 },
214 "id": 1
215 },
216 {
217 "edit": {
218 "at": 134349951600000000,
219 "ops": [
220 {
221 "Page": {
222 "op": {
223 "Add": {
224 "before": null,
225 "object": {
226 "Outline": {
227 "id": "{2A900876-A601-4591-B865-1DD52FFFDBE3},2",
228 "indents": [],
229 "layout": {
230 "max_height": null,
231 "max_width": null,
232 "reserved_width": null,
233 "width_set_by_user": null,
234 "x": 36.0,
235 "y": 36.0
236 },
237 "min_width": null,
238 "paragraphs": [
239 {
240 "collapsed": false,
241 "content": {
242 "Text": {
243 "date_field": null,
244 "id": "{2A900876-A601-4591-B865-1DD52FFFDBE3},1",
245 "tags": [],
246 "text": {
247 "spans": [
248 {
249 "end": 16,
250 "format": {
251 "alignment": null,
252 "bold": null,
253 "color": null,
254 "embedded_object": null,
255 "font": "Calibri",
256 "font_size": 11.0,
257 "hidden": null,
258 "highlight": null,
259 "hyperlink": null,
260 "hyperlink_label": null,
261 "italic": null,
262 "language": 1033,
263 "line_spacing": null,
264 "list_spacing": null,
265 "math": null,
266 "math_object": null,
267 "rtl": null,
268 "space_after": null,
269 "space_before": null,
270 "strike": null,
271 "subscript": null,
272 "superscript": null,
273 "underline": null
274 }
275 }
276 ],
277 "text": "Actor 0 🦀 é"
278 }
279 }
280 },
281 "format": {
282 "alignment": null,
283 "bold": null,
284 "color": null,
285 "embedded_object": null,
286 "font": null,
287 "font_size": null,
288 "hidden": null,
289 "highlight": null,
290 "hyperlink": null,
291 "hyperlink_label": null,
292 "italic": null,
293 "language": null,
294 "line_spacing": null,
295 "list_spacing": null,
296 "math": null,
297 "math_object": null,
298 "rtl": null,
299 "space_after": null,
300 "space_before": null,
301 "strike": null,
302 "subscript": null,
303 "superscript": null,
304 "underline": null
305 },
306 "id": "{2A900876-A601-4591-B865-1DD52FFFDBE3},3",
307 "level": 1,
308 "lists": [],
309 "media": {
310 "recordings": [],
311 "time_ms": null
312 },
313 "parent": null,
314 "style": null,
315 "tags": []
316 }
317 ],
318 "title": false,
319 "unsupported": []
320 }
321 }
322 }
323 },
324 "space": "{B9E9B75B-7B33-4C60-A3D1-0BE78F314485},1"
325 }
326 }
327 ]
328 },
329 "id": 2
330 }
331 ],
332 [
333 {
334 "edit": {
335 "at": 133000000000000000,
336 "ops": [
337 {
338 "Section": {
339 "Pages": [
340 {
341 "guid": [
342 232,
343 190,
344 205,
345 38,
346 113,
347 7,
348 97,
349 70,
350 142,
351 69,
352 28,
353 16,
354 219,
355 74,
356 94,
357 170
358 ],
359 "level": 1,
360 "position": {
361 "Before": "{021A914B-C467-4FDE-BF44-B4D695410F0B},1"
362 },
363 "space": "{F31C990F-D1E1-4840-BB4F-46ED372732A9},1"
364 },
365 {
366 "guid": [
367 240,
368 152,
369 226,
370 6,
371 125,
372 5,
373 59,
374 78,
375 159,
376 199,
377 217,
378 224,
379 167,
380 207,
381 69,
382 206
383 ],
384 "level": 2,
385 "position": "Keep",
386 "space": "{B0559E07-BA1D-4B20-B7AA-906C04AA5DFE},1"
387 }
388 ]
389 }
390 }
391 ]
392 },
393 "id": 1
394 },
395 {
396 "edit": {
397 "at": 134349951600000000,
398 "ops": [
399 {
400 "Page": {
401 "op": {
402 "Add": {
403 "before": null,
404 "object": {
405 "Outline": {
406 "id": "{2A900876-A601-4591-B865-1DD52FFFDBE3},5",
407 "indents": [],
408 "layout": {
409 "max_height": null,
410 "max_width": null,
411 "reserved_width": null,
412 "width_set_by_user": null,
413 "x": 36.0,
414 "y": 36.0
415 },
416 "min_width": null,
417 "paragraphs": [
418 {
419 "collapsed": false,
420 "content": {
421 "Text": {
422 "date_field": null,
423 "id": "{2A900876-A601-4591-B865-1DD52FFFDBE3},4",
424 "tags": [],
425 "text": {
426 "spans": [
427 {
428 "end": 16,
429 "format": {
430 "alignment": null,
431 "bold": null,
432 "color": null,
433 "embedded_object": null,
434 "font": "Calibri",
435 "font_size": 11.0,
436 "hidden": null,
437 "highlight": null,
438 "hyperlink": null,
439 "hyperlink_label": null,
440 "italic": null,
441 "language": 1033,
442 "line_spacing": null,
443 "list_spacing": null,
444 "math": null,
445 "math_object": null,
446 "rtl": null,
447 "space_after": null,
448 "space_before": null,
449 "strike": null,
450 "subscript": null,
451 "superscript": null,
452 "underline": null
453 }
454 }
455 ],
456 "text": "Actor 1 🦀 é"
457 }
458 }
459 },
460 "format": {
461 "alignment": null,
462 "bold": null,
463 "color": null,
464 "embedded_object": null,
465 "font": null,
466 "font_size": null,
467 "hidden": null,
468 "highlight": null,
469 "hyperlink": null,
470 "hyperlink_label": null,
471 "italic": null,
472 "language": null,
473 "line_spacing": null,
474 "list_spacing": null,
475 "math": null,
476 "math_object": null,
477 "rtl": null,
478 "space_after": null,
479 "space_before": null,
480 "strike": null,
481 "subscript": null,
482 "superscript": null,
483 "underline": null
484 },
485 "id": "{2A900876-A601-4591-B865-1DD52FFFDBE3},6",
486 "level": 1,
487 "lists": [],
488 "media": {
489 "recordings": [],
490 "time_ms": null
491 },
492 "parent": null,
493 "style": null,
494 "tags": []
495 }
496 ],
497 "title": false,
498 "unsupported": []
499 }
500 }
501 }
502 },
503 "space": "{F31C990F-D1E1-4840-BB4F-46ED372732A9},1"
504 }
505 }
506 ]
507 },
508 "id": 2
509 }
510 ],
511 [
512 {
513 "edit": {
514 "at": 133000000000000000,
515 "ops": [
516 {
517 "Section": {
518 "Pages": [
519 {
520 "guid": [
521 128,
522 150,
523 44,
524 239,
525 75,
526 40,
527 93,
528 71,
529 139,
530 44,
531 144,
532 149,
533 3,
534 225,
535 194,
536 105
537 ],
538 "level": 1,
539 "position": {
540 "Before": "{4A597354-6867-49AB-B740-4C1E39E40E2E},1"
541 },
542 "space": "{544121FD-0E61-4A76-8191-A02ABA23A314},1"
543 },
544 {
545 "guid": [
546 77,
547 215,
548 146,
549 157,
550 207,
551 140,
552 1,
553 70,
554 160,
555 237,
556 173,
557 17,
558 181,
559 152,
560 129,
561 117
562 ],
563 "level": 2,
564 "position": "Keep",
565 "space": "{7F7E3DAF-B98B-4BBD-9EB2-4534A3C74123},1"
566 }
567 ]
568 }
569 }
570 ]
571 },
572 "id": 1
573 },
574 {
575 "edit": {
576 "at": 134349951610000000,
577 "ops": [
578 {
579 "Page": {
580 "op": {
581 "Add": {
582 "before": null,
583 "object": {
584 "Outline": {
585 "id": "{2A900876-A601-4591-B865-1DD52FFFDBE3},8",
586 "indents": [],
587 "layout": {
588 "max_height": null,
589 "max_width": null,
590 "reserved_width": null,
591 "width_set_by_user": null,
592 "x": 36.0,
593 "y": 36.0
594 },
595 "min_width": null,
596 "paragraphs": [
597 {
598 "collapsed": false,
599 "content": {
600 "Text": {
601 "date_field": null,
602 "id": "{2A900876-A601-4591-B865-1DD52FFFDBE3},7",
603 "tags": [],
604 "text": {
605 "spans": [
606 {
607 "end": 16,
608 "format": {
609 "alignment": null,
610 "bold": null,
611 "color": null,
612 "embedded_object": null,
613 "font": "Calibri",
614 "font_size": 11.0,
615 "hidden": null,
616 "highlight": null,
617 "hyperlink": null,
618 "hyperlink_label": null,
619 "italic": null,
620 "language": 1033,
621 "line_spacing": null,
622 "list_spacing": null,
623 "math": null,
624 "math_object": null,
625 "rtl": null,
626 "space_after": null,
627 "space_before": null,
628 "strike": null,
629 "subscript": null,
630 "superscript": null,
631 "underline": null
632 }
633 }
634 ],
635 "text": "Actor 2 🦀 é"
636 }
637 }
638 },
639 "format": {
640 "alignment": null,
641 "bold": null,
642 "color": null,
643 "embedded_object": null,
644 "font": null,
645 "font_size": null,
646 "hidden": null,
647 "highlight": null,
648 "hyperlink": null,
649 "hyperlink_label": null,
650 "italic": null,
651 "language": null,
652 "line_spacing": null,
653 "list_spacing": null,
654 "math": null,
655 "math_object": null,
656 "rtl": null,
657 "space_after": null,
658 "space_before": null,
659 "strike": null,
660 "subscript": null,
661 "superscript": null,
662 "underline": null
663 },
664 "id": "{2A900876-A601-4591-B865-1DD52FFFDBE3},9",
665 "level": 1,
666 "lists": [],
667 "media": {
668 "recordings": [],
669 "time_ms": null
670 },
671 "parent": null,
672 "style": null,
673 "tags": []
674 }
675 ],
676 "title": false,
677 "unsupported": []
678 }
679 }
680 }
681 },
682 "space": "{544121FD-0E61-4A76-8191-A02ABA23A314},1"
683 }
684 }
685 ]
686 },
687 "id": 2
688 }
689 ],
690 [
691 {
692 "edit": {
693 "at": 133000000000000000,
694 "ops": [
695 {
696 "Section": {
697 "Pages": [
698 {
699 "guid": [
700 60,
701 24,
702 102,
703 131,
704 237,
705 125,
706 96,
707 68,
708 140,
709 15,
710 56,
711 134,
712 76,
713 94,
714 75,
715 241
716 ],
717 "level": 1,
718 "position": {
719 "Before": "{8D4454DE-21E6-49FB-9438-B48408E348E4},1"
720 },
721 "space": "{303BACE6-CEFC-4107-AC1E-D6F3BBC7D1AE},1"
722 },
723 {
724 "guid": [
725 43,
726 187,
727 225,
728 181,
729 143,
730 57,
731 100,
732 71,
733 156,
734 65,
735 221,
736 123,
737 106,
738 144,
739 24,
740 42
741 ],
742 "level": 2,
743 "position": "Keep",
744 "space": "{214F33C4-3F0A-4CEF-9BC9-F8D69687830E},1"
745 }
746 ]
747 }
748 }
749 ]
750 },
751 "id": 1
752 },
753 {
754 "edit": {
755 "at": 134349951610000000,
756 "ops": [
757 {
758 "Page": {
759 "op": {
760 "Add": {
761 "before": null,
762 "object": {
763 "Outline": {
764 "id": "{2A900876-A601-4591-B865-1DD52FFFDBE3},11",
765 "indents": [],
766 "layout": {
767 "max_height": null,
768 "max_width": null,
769 "reserved_width": null,
770 "width_set_by_user": null,
771 "x": 36.0,
772 "y": 36.0
773 },
774 "min_width": null,
775 "paragraphs": [
776 {
777 "collapsed": false,
778 "content": {
779 "Text": {
780 "date_field": null,
781 "id": "{2A900876-A601-4591-B865-1DD52FFFDBE3},10",
782 "tags": [],
783 "text": {
784 "spans": [
785 {
786 "end": 16,
787 "format": {
788 "alignment": null,
789 "bold": null,
790 "color": null,
791 "embedded_object": null,
792 "font": "Calibri",
793 "font_size": 11.0,
794 "hidden": null,
795 "highlight": null,
796 "hyperlink": null,
797 "hyperlink_label": null,
798 "italic": null,
799 "language": 1033,
800 "line_spacing": null,
801 "list_spacing": null,
802 "math": null,
803 "math_object": null,
804 "rtl": null,
805 "space_after": null,
806 "space_before": null,
807 "strike": null,
808 "subscript": null,
809 "superscript": null,
810 "underline": null
811 }
812 }
813 ],
814 "text": "Actor 3 🦀 é"
815 }
816 }
817 },
818 "format": {
819 "alignment": null,
820 "bold": null,
821 "color": null,
822 "embedded_object": null,
823 "font": null,
824 "font_size": null,
825 "hidden": null,
826 "highlight": null,
827 "hyperlink": null,
828 "hyperlink_label": null,
829 "italic": null,
830 "language": null,
831 "line_spacing": null,
832 "list_spacing": null,
833 "math": null,
834 "math_object": null,
835 "rtl": null,
836 "space_after": null,
837 "space_before": null,
838 "strike": null,
839 "subscript": null,
840 "superscript": null,
841 "underline": null
842 },
843 "id": "{2A900876-A601-4591-B865-1DD52FFFDBE3},12",
844 "level": 1,
845 "lists": [],
846 "media": {
847 "recordings": [],
848 "time_ms": null
849 },
850 "parent": null,
851 "style": null,
852 "tags": []
853 }
854 ],
855 "title": false,
856 "unsupported": []
857 }
858 }
859 }
860 },
861 "space": "{303BACE6-CEFC-4107-AC1E-D6F3BBC7D1AE},1"
862 }
863 }
864 ]
865 },
866 "id": 2
867 }
868 ],
869 [
870 {
871 "edit": {
872 "at": 133000000000000000,
873 "ops": [
874 {
875 "Section": {
876 "Pages": [
877 {
878 "guid": [
879 237,
880 166,
881 115,
882 62,
883 6,
884 126,
885 122,
886 71,
887 165,
888 0,
889 132,
890 211,
891 66,
892 36,
893 104,
894 34
895 ],
896 "level": 1,
897 "position": {
898 "Before": "{64E10720-B6D7-46D7-B810-BA636020102D},1"
899 },
900 "space": "{CE4D4557-358A-4401-8426-C7C794F5F2BE},1"
901 },
902 {
903 "guid": [
904 20,
905 190,
906 251,
907 94,
908 101,
909 42,
910 0,
911 68,
912 150,
913 161,
914 251,
915 52,
916 113,
917 3,
918 175,
919 41
920 ],
921 "level": 2,
922 "position": "Keep",
923 "space": "{FF359729-6EDF-4577-A968-7774CD55FB52},1"
924 }
925 ]
926 }
927 }
928 ]
929 },
930 "id": 1
931 },
932 {
933 "edit": {
934 "at": 134349951610000000,
935 "ops": [
936 {
937 "Page": {
938 "op": {
939 "Add": {
940 "before": null,
941 "object": {
942 "Outline": {
943 "id": "{2A900876-A601-4591-B865-1DD52FFFDBE3},14",
944 "indents": [],
945 "layout": {
946 "max_height": null,
947 "max_width": null,
948 "reserved_width": null,
949 "width_set_by_user": null,
950 "x": 36.0,
951 "y": 36.0
952 },
953 "min_width": null,
954 "paragraphs": [
955 {
956 "collapsed": false,
957 "content": {
958 "Text": {
959 "date_field": null,
960 "id": "{2A900876-A601-4591-B865-1DD52FFFDBE3},13",
961 "tags": [],
962 "text": {
963 "spans": [
964 {
965 "end": 16,
966 "format": {
967 "alignment": null,
968 "bold": null,
969 "color": null,
970 "embedded_object": null,
971 "font": "Calibri",
972 "font_size": 11.0,
973 "hidden": null,
974 "highlight": null,
975 "hyperlink": null,
976 "hyperlink_label": null,
977 "italic": null,
978 "language": 1033,
979 "line_spacing": null,
980 "list_spacing": null,
981 "math": null,
982 "math_object": null,
983 "rtl": null,
984 "space_after": null,
985 "space_before": null,
986 "strike": null,
987 "subscript": null,
988 "superscript": null,
989 "underline": null
990 }
991 }
992 ],
993 "text": "Actor 4 🦀 é"
994 }
995 }
996 },
997 "format": {
998 "alignment": null,
999 "bold": null,
1000 "color": null,
1001 "embedded_object": null,
1002 "font": null,
1003 "font_size": null,
1004 "hidden": null,
1005 "highlight": null,
1006 "hyperlink": null,
1007 "hyperlink_label": null,
1008 "italic": null,
1009 "language": null,
1010 "line_spacing": null,
1011 "list_spacing": null,
1012 "math": null,
1013 "math_object": null,
1014 "rtl": null,
1015 "space_after": null,
1016 "space_before": null,
1017 "strike": null,
1018 "subscript": null,
1019 "superscript": null,
1020 "underline": null
1021 },
1022 "id": "{2A900876-A601-4591-B865-1DD52FFFDBE3},15",
1023 "level": 1,
1024 "lists": [],
1025 "media": {
1026 "recordings": [],
1027 "time_ms": null
1028 },
1029 "parent": null,
1030 "style": null,
1031 "tags": []
1032 }
1033 ],
1034 "title": false,
1035 "unsupported": []
1036 }
1037 }
1038 }
1039 },
1040 "space": "{CE4D4557-358A-4401-8426-C7C794F5F2BE},1"
1041 }
1042 }
1043 ]
1044 },
1045 "id": 2
1046 }
1047 ],
1048 [
1049 {
1050 "edit": {
1051 "at": 133000000000000000,
1052 "ops": [
1053 {
1054 "Section": {
1055 "Pages": [
1056 {
1057 "guid": [
1058 148,
1059 253,
1060 150,
1061 142,
1062 238,
1063 167,
1064 15,
1065 78,
1066 187,
1067 244,
1068 152,
1069 219,
1070 101,
1071 253,
1072 64,
1073 204
1074 ],
1075 "level": 1,
1076 "position": {
1077 "Before": "{3DDB5E8B-3245-43D0-B001-93E5BC5C8374},1"
1078 },
1079 "space": "{3E3C7041-7C7E-4104-8755-CE045D331F8F},1"
1080 },
1081 {
1082 "guid": [
1083 121,
1084 181,
1085 255,
1086 117,
1087 85,
1088 146,
1089 190,
1090 70,
1091 147,
1092 88,
1093 216,
1094 245,
1095 1,
1096 13,
1097 103,
1098 107
1099 ],
1100 "level": 2,
1101 "position": "Keep",
1102 "space": "{7B267536-B0AE-4744-B0E4-C5628174834D},1"
1103 }
1104 ]
1105 }
1106 }
1107 ]
1108 },
1109 "id": 1
1110 },
1111 {
1112 "edit": {
1113 "at": 134349951610000000,
1114 "ops": [
1115 {
1116 "Page": {
1117 "op": {
1118 "Add": {
1119 "before": null,
1120 "object": {
1121 "Outline": {
1122 "id": "{2A900876-A601-4591-B865-1DD52FFFDBE3},17",
1123 "indents": [],
1124 "layout": {
1125 "max_height": null,
1126 "max_width": null,
1127 "reserved_width": null,
1128 "width_set_by_user": null,
1129 "x": 36.0,
1130 "y": 36.0
1131 },
1132 "min_width": null,
1133 "paragraphs": [
1134 {
1135 "collapsed": false,
1136 "content": {
1137 "Text": {
1138 "date_field": null,
1139 "id": "{2A900876-A601-4591-B865-1DD52FFFDBE3},16",
1140 "tags": [],
1141 "text": {
1142 "spans": [
1143 {
1144 "end": 16,
1145 "format": {
1146 "alignment": null,
1147 "bold": null,
1148 "color": null,
1149 "embedded_object": null,
1150 "font": "Calibri",
1151 "font_size": 11.0,
1152 "hidden": null,
1153 "highlight": null,
1154 "hyperlink": null,
1155 "hyperlink_label": null,
1156 "italic": null,
1157 "language": 1033,
1158 "line_spacing": null,
1159 "list_spacing": null,
1160 "math": null,
1161 "math_object": null,
1162 "rtl": null,
1163 "space_after": null,
1164 "space_before": null,
1165 "strike": null,
1166 "subscript": null,
1167 "superscript": null,
1168 "underline": null
1169 }
1170 }
1171 ],
1172 "text": "Actor 5 🦀 é"
1173 }
1174 }
1175 },
1176 "format": {
1177 "alignment": null,
1178 "bold": null,
1179 "color": null,
1180 "embedded_object": null,
1181 "font": null,
1182 "font_size": null,
1183 "hidden": null,
1184 "highlight": null,
1185 "hyperlink": null,
1186 "hyperlink_label": null,
1187 "italic": null,
1188 "language": null,
1189 "line_spacing": null,
1190 "list_spacing": null,
1191 "math": null,
1192 "math_object": null,
1193 "rtl": null,
1194 "space_after": null,
1195 "space_before": null,
1196 "strike": null,
1197 "subscript": null,
1198 "superscript": null,
1199 "underline": null
1200 },
1201 "id": "{2A900876-A601-4591-B865-1DD52FFFDBE3},18",
1202 "level": 1,
1203 "lists": [],
1204 "media": {
1205 "recordings": [],
1206 "time_ms": null
1207 },
1208 "parent": null,
1209 "style": null,
1210 "tags": []
1211 }
1212 ],
1213 "title": false,
1214 "unsupported": []
1215 }
1216 }
1217 }
1218 },
1219 "space": "{3E3C7041-7C7E-4104-8755-CE045D331F8F},1"
1220 }
1221 }
1222 ]
1223 },
1224 "id": 2
1225 }
1226 ],
1227 [
1228 {
1229 "edit": {
1230 "at": 133000000000000000,
1231 "ops": [
1232 {
1233 "Section": {
1234 "Pages": [
1235 {
1236 "guid": [
1237 156,
1238 157,
1239 179,
1240 162,
1241 123,
1242 147,
1243 117,
1244 70,
1245 181,
1246 60,
1247 138,
1248 82,
1249 124,
1250 75,
1251 38,
1252 187
1253 ],
1254 "level": 1,
1255 "position": {
1256 "Before": "{BC956E6C-D057-409D-A618-A6BF06DD9AFC},1"
1257 },
1258 "space": "{1F097AAE-D72E-4A7A-8359-6DCE136F0E21},1"
1259 },
1260 {
1261 "guid": [
1262 3,
1263 209,
1264 128,
1265 197,
1266 70,
1267 248,
1268 104,
1269 70,
1270 162,
1271 92,
1272 200,
1273 5,
1274 82,
1275 16,
1276 182,
1277 46
1278 ],
1279 "level": 2,
1280 "position": "Keep",
1281 "space": "{39C7177D-715E-417F-A5B2-596DCDE13027},1"
1282 }
1283 ]
1284 }
1285 }
1286 ]
1287 },
1288 "id": 1
1289 },
1290 {
1291 "edit": {
1292 "at": 134349951610000000,
1293 "ops": [
1294 {
1295 "Page": {
1296 "op": {
1297 "Add": {
1298 "before": null,
1299 "object": {
1300 "Outline": {
1301 "id": "{2A900876-A601-4591-B865-1DD52FFFDBE3},20",
1302 "indents": [],
1303 "layout": {
1304 "max_height": null,
1305 "max_width": null,
1306 "reserved_width": null,
1307 "width_set_by_user": null,
1308 "x": 36.0,
1309 "y": 36.0
1310 },
1311 "min_width": null,
1312 "paragraphs": [
1313 {
1314 "collapsed": false,
1315 "content": {
1316 "Text": {
1317 "date_field": null,
1318 "id": "{2A900876-A601-4591-B865-1DD52FFFDBE3},19",
1319 "tags": [],
1320 "text": {
1321 "spans": [
1322 {
1323 "end": 16,
1324 "format": {
1325 "alignment": null,
1326 "bold": null,
1327 "color": null,
1328 "embedded_object": null,
1329 "font": "Calibri",
1330 "font_size": 11.0,
1331 "hidden": null,
1332 "highlight": null,
1333 "hyperlink": null,
1334 "hyperlink_label": null,
1335 "italic": null,
1336 "language": 1033,
1337 "line_spacing": null,
1338 "list_spacing": null,
1339 "math": null,
1340 "math_object": null,
1341 "rtl": null,
1342 "space_after": null,
1343 "space_before": null,
1344 "strike": null,
1345 "subscript": null,
1346 "superscript": null,
1347 "underline": null
1348 }
1349 }
1350 ],
1351 "text": "Actor 6 🦀 é"
1352 }
1353 }
1354 },
1355 "format": {
1356 "alignment": null,
1357 "bold": null,
1358 "color": null,
1359 "embedded_object": null,
1360 "font": null,
1361 "font_size": null,
1362 "hidden": null,
1363 "highlight": null,
1364 "hyperlink": null,
1365 "hyperlink_label": null,
1366 "italic": null,
1367 "language": null,
1368 "line_spacing": null,
1369 "list_spacing": null,
1370 "math": null,
1371 "math_object": null,
1372 "rtl": null,
1373 "space_after": null,
1374 "space_before": null,
1375 "strike": null,
1376 "subscript": null,
1377 "superscript": null,
1378 "underline": null
1379 },
1380 "id": "{2A900876-A601-4591-B865-1DD52FFFDBE3},21",
1381 "level": 1,
1382 "lists": [],
1383 "media": {
1384 "recordings": [],
1385 "time_ms": null
1386 },
1387 "parent": null,
1388 "style": null,
1389 "tags": []
1390 }
1391 ],
1392 "title": false,
1393 "unsupported": []
1394 }
1395 }
1396 }
1397 },
1398 "space": "{1F097AAE-D72E-4A7A-8359-6DCE136F0E21},1"
1399 }
1400 }
1401 ]
1402 },
1403 "id": 2
1404 }
1405 ],
1406 [
1407 {
1408 "edit": {
1409 "at": 133000000000000000,
1410 "ops": [
1411 {
1412 "Section": {
1413 "Pages": [
1414 {
1415 "guid": [
1416 207,
1417 242,
1418 85,
1419 164,
1420 205,
1421 114,
1422 120,
1423 73,
1424 145,
1425 29,
1426 194,
1427 242,
1428 8,
1429 34,
1430 144,
1431 124
1432 ],
1433 "level": 1,
1434 "position": {
1435 "Before": "{F924B8C7-66CA-4FEA-ADD7-5ECD6910D5AA},1"
1436 },
1437 "space": "{2C70EAEB-A51D-448F-8955-89156506CF95},1"
1438 },
1439 {
1440 "guid": [
1441 38,
1442 126,
1443 122,
1444 127,
1445 151,
1446 38,
1447 229,
1448 76,
1449 135,
1450 62,
1451 181,
1452 209,
1453 254,
1454 240,
1455 31,
1456 157
1457 ],
1458 "level": 2,
1459 "position": "Keep",
1460 "space": "{95B02C61-106C-47DC-AC71-563A6AE3F6BE},1"
1461 }
1462 ]
1463 }
1464 }
1465 ]
1466 },
1467 "id": 1
1468 },
1469 {
1470 "edit": {
1471 "at": 134349951610000000,
1472 "ops": [
1473 {
1474 "Page": {
1475 "op": {
1476 "Add": {
1477 "before": null,
1478 "object": {
1479 "Outline": {
1480 "id": "{2A900876-A601-4591-B865-1DD52FFFDBE3},23",
1481 "indents": [],
1482 "layout": {
1483 "max_height": null,
1484 "max_width": null,
1485 "reserved_width": null,
1486 "width_set_by_user": null,
1487 "x": 36.0,
1488 "y": 36.0
1489 },
1490 "min_width": null,
1491 "paragraphs": [
1492 {
1493 "collapsed": false,
1494 "content": {
1495 "Text": {
1496 "date_field": null,
1497 "id": "{2A900876-A601-4591-B865-1DD52FFFDBE3},22",
1498 "tags": [],
1499 "text": {
1500 "spans": [
1501 {
1502 "end": 16,
1503 "format": {
1504 "alignment": null,
1505 "bold": null,
1506 "color": null,
1507 "embedded_object": null,
1508 "font": "Calibri",
1509 "font_size": 11.0,
1510 "hidden": null,
1511 "highlight": null,
1512 "hyperlink": null,
1513 "hyperlink_label": null,
1514 "italic": null,
1515 "language": 1033,
1516 "line_spacing": null,
1517 "list_spacing": null,
1518 "math": null,
1519 "math_object": null,
1520 "rtl": null,
1521 "space_after": null,
1522 "space_before": null,
1523 "strike": null,
1524 "subscript": null,
1525 "superscript": null,
1526 "underline": null
1527 }
1528 }
1529 ],
1530 "text": "Actor 7 🦀 é"
1531 }
1532 }
1533 },
1534 "format": {
1535 "alignment": null,
1536 "bold": null,
1537 "color": null,
1538 "embedded_object": null,
1539 "font": null,
1540 "font_size": null,
1541 "hidden": null,
1542 "highlight": null,
1543 "hyperlink": null,
1544 "hyperlink_label": null,
1545 "italic": null,
1546 "language": null,
1547 "line_spacing": null,
1548 "list_spacing": null,
1549 "math": null,
1550 "math_object": null,
1551 "rtl": null,
1552 "space_after": null,
1553 "space_before": null,
1554 "strike": null,
1555 "subscript": null,
1556 "superscript": null,
1557 "underline": null
1558 },
1559 "id": "{2A900876-A601-4591-B865-1DD52FFFDBE3},24",
1560 "level": 1,
1561 "lists": [],
1562 "media": {
1563 "recordings": [],
1564 "time_ms": null
1565 },
1566 "parent": null,
1567 "style": null,
1568 "tags": []
1569 }
1570 ],
1571 "title": false,
1572 "unsupported": []
1573 }
1574 }
1575 }
1576 },
1577 "space": "{2C70EAEB-A51D-448F-8955-89156506CF95},1"
1578 }
1579 }
1580 ]
1581 },
1582 "id": 2
1583 }
1584 ],
1585 [
1586 {
1587 "edit": {
1588 "at": 133000000000000000,
1589 "ops": [
1590 {
1591 "Section": {
1592 "Pages": [
1593 {
1594 "guid": [
1595 215,
1596 122,
1597 231,
1598 63,
1599 33,
1600 23,
1601 153,
1602 71,
1603 146,
1604 55,
1605 135,
1606 108,
1607 108,
1608 25,
1609 220,
1610 189
1611 ],
1612 "level": 1,
1613 "position": {
1614 "Before": "{232109B4-E38E-4D7A-AB6B-2C52BCD49511},1"
1615 },
1616 "space": "{907D9244-8140-4F4C-8BA9-6E42C8F2F5CC},1"
1617 },
1618 {
1619 "guid": [
1620 147,
1621 175,
1622 210,
1623 70,
1624 177,
1625 159,
1626 86,
1627 67,
1628 169,
1629 228,
1630 21,
1631 200,
1632 173,
1633 16,
1634 23,
1635 190
1636 ],
1637 "level": 2,
1638 "position": "Keep",
1639 "space": "{1A4EE170-3A3E-4E9E-9CDC-8DD17C510B26},1"
1640 }
1641 ]
1642 }
1643 }
1644 ]
1645 },
1646 "id": 1
1647 },
1648 {
1649 "edit": {
1650 "at": 134349951620000000,
1651 "ops": [
1652 {
1653 "Page": {
1654 "op": {
1655 "Add": {
1656 "before": null,
1657 "object": {
1658 "Outline": {
1659 "id": "{2A900876-A601-4591-B865-1DD52FFFDBE3},26",
1660 "indents": [],
1661 "layout": {
1662 "max_height": null,
1663 "max_width": null,
1664 "reserved_width": null,
1665 "width_set_by_user": null,
1666 "x": 36.0,
1667 "y": 36.0
1668 },
1669 "min_width": null,
1670 "paragraphs": [
1671 {
1672 "collapsed": false,
1673 "content": {
1674 "Text": {
1675 "date_field": null,
1676 "id": "{2A900876-A601-4591-B865-1DD52FFFDBE3},25",
1677 "tags": [],
1678 "text": {
1679 "spans": [
1680 {
1681 "end": 16,
1682 "format": {
1683 "alignment": null,
1684 "bold": null,
1685 "color": null,
1686 "embedded_object": null,
1687 "font": "Calibri",
1688 "font_size": 11.0,
1689 "hidden": null,
1690 "highlight": null,
1691 "hyperlink": null,
1692 "hyperlink_label": null,
1693 "italic": null,
1694 "language": 1033,
1695 "line_spacing": null,
1696 "list_spacing": null,
1697 "math": null,
1698 "math_object": null,
1699 "rtl": null,
1700 "space_after": null,
1701 "space_before": null,
1702 "strike": null,
1703 "subscript": null,
1704 "superscript": null,
1705 "underline": null
1706 }
1707 }
1708 ],
1709 "text": "Actor 8 🦀 é"
1710 }
1711 }
1712 },
1713 "format": {
1714 "alignment": null,
1715 "bold": null,
1716 "color": null,
1717 "embedded_object": null,
1718 "font": null,
1719 "font_size": null,
1720 "hidden": null,
1721 "highlight": null,
1722 "hyperlink": null,
1723 "hyperlink_label": null,
1724 "italic": null,
1725 "language": null,
1726 "line_spacing": null,
1727 "list_spacing": null,
1728 "math": null,
1729 "math_object": null,
1730 "rtl": null,
1731 "space_after": null,
1732 "space_before": null,
1733 "strike": null,
1734 "subscript": null,
1735 "superscript": null,
1736 "underline": null
1737 },
1738 "id": "{2A900876-A601-4591-B865-1DD52FFFDBE3},27",
1739 "level": 1,
1740 "lists": [],
1741 "media": {
1742 "recordings": [],
1743 "time_ms": null
1744 },
1745 "parent": null,
1746 "style": null,
1747 "tags": []
1748 }
1749 ],
1750 "title": false,
1751 "unsupported": []
1752 }
1753 }
1754 }
1755 },
1756 "space": "{907D9244-8140-4F4C-8BA9-6E42C8F2F5CC},1"
1757 }
1758 }
1759 ]
1760 },
1761 "id": 2
1762 }
1763 ],
1764 [
1765 {
1766 "edit": {
1767 "at": 133000000000000000,
1768 "ops": [
1769 {
1770 "Section": {
1771 "Pages": [
1772 {
1773 "guid": [
1774 114,
1775 248,
1776 161,
1777 39,
1778 180,
1779 234,
1780 235,
1781 74,
1782 172,
1783 83,
1784 92,
1785 166,
1786 243,
1787 74,
1788 0,
1789 10
1790 ],
1791 "level": 1,
1792 "position": {
1793 "Before": "{CF289176-0CDB-4163-8A44-C51958D8B8A1},1"
1794 },
1795 "space": "{8679521F-8046-4611-A5A3-AB151635E26D},1"
1796 },
1797 {
1798 "guid": [
1799 161,
1800 154,
1801 81,
1802 212,
1803 11,
1804 138,
1805 231,
1806 74,
1807 178,
1808 141,
1809 20,
1810 210,
1811 107,
1812 144,
1813 145,
1814 81
1815 ],
1816 "level": 2,
1817 "position": "Keep",
1818 "space": "{99334A81-D662-4AC6-A49D-A0860B4E0DD8},1"
1819 }
1820 ]
1821 }
1822 }
1823 ]
1824 },
1825 "id": 1
1826 },
1827 {
1828 "edit": {
1829 "at": 134349951620000000,
1830 "ops": [
1831 {
1832 "Page": {
1833 "op": {
1834 "Add": {
1835 "before": null,
1836 "object": {
1837 "Outline": {
1838 "id": "{2A900876-A601-4591-B865-1DD52FFFDBE3},29",
1839 "indents": [],
1840 "layout": {
1841 "max_height": null,
1842 "max_width": null,
1843 "reserved_width": null,
1844 "width_set_by_user": null,
1845 "x": 36.0,
1846 "y": 36.0
1847 },
1848 "min_width": null,
1849 "paragraphs": [
1850 {
1851 "collapsed": false,
1852 "content": {
1853 "Text": {
1854 "date_field": null,
1855 "id": "{2A900876-A601-4591-B865-1DD52FFFDBE3},28",
1856 "tags": [],
1857 "text": {
1858 "spans": [
1859 {
1860 "end": 16,
1861 "format": {
1862 "alignment": null,
1863 "bold": null,
1864 "color": null,
1865 "embedded_object": null,
1866 "font": "Calibri",
1867 "font_size": 11.0,
1868 "hidden": null,
1869 "highlight": null,
1870 "hyperlink": null,
1871 "hyperlink_label": null,
1872 "italic": null,
1873 "language": 1033,
1874 "line_spacing": null,
1875 "list_spacing": null,
1876 "math": null,
1877 "math_object": null,
1878 "rtl": null,
1879 "space_after": null,
1880 "space_before": null,
1881 "strike": null,
1882 "subscript": null,
1883 "superscript": null,
1884 "underline": null
1885 }
1886 }
1887 ],
1888 "text": "Actor 9 🦀 é"
1889 }
1890 }
1891 },
1892 "format": {
1893 "alignment": null,
1894 "bold": null,
1895 "color": null,
1896 "embedded_object": null,
1897 "font": null,
1898 "font_size": null,
1899 "hidden": null,
1900 "highlight": null,
1901 "hyperlink": null,
1902 "hyperlink_label": null,
1903 "italic": null,
1904 "language": null,
1905 "line_spacing": null,
1906 "list_spacing": null,
1907 "math": null,
1908 "math_object": null,
1909 "rtl": null,
1910 "space_after": null,
1911 "space_before": null,
1912 "strike": null,
1913 "subscript": null,
1914 "superscript": null,
1915 "underline": null
1916 },
1917 "id": "{2A900876-A601-4591-B865-1DD52FFFDBE3},30",
1918 "level": 1,
1919 "lists": [],
1920 "media": {
1921 "recordings": [],
1922 "time_ms": null
1923 },
1924 "parent": null,
1925 "style": null,
1926 "tags": []
1927 }
1928 ],
1929 "title": false,
1930 "unsupported": []
1931 }
1932 }
1933 }
1934 },
1935 "space": "{8679521F-8046-4611-A5A3-AB151635E26D},1"
1936 }
1937 }
1938 ]
1939 },
1940 "id": 2
1941 }
1942 ],
1943 [
1944 {
1945 "edit": {
1946 "at": 133000000000000000,
1947 "ops": [
1948 {
1949 "Section": {
1950 "Pages": [
1951 {
1952 "guid": [
1953 141,
1954 40,
1955 59,
1956 48,
1957 97,
1958 31,
1959 212,
1960 65,
1961 153,
1962 12,
1963 89,
1964 90,
1965 90,
1966 202,
1967 68,
1968 159
1969 ],
1970 "level": 1,
1971 "position": {
1972 "Before": "{BDFF266F-D35B-4408-B624-B3C5DE9DECED},1"
1973 },
1974 "space": "{7BAB3EDA-868E-4B41-AD61-B32D463AB3E0},1"
1975 },
1976 {
1977 "guid": [
1978 71,
1979 27,
1980 109,
1981 113,
1982 163,
1983 222,
1984 41,
1985 74,
1986 134,
1987 176,
1988 81,
1989 84,
1990 203,
1991 181,
1992 219,
1993 203
1994 ],
1995 "level": 2,
1996 "position": "Keep",
1997 "space": "{458A27E7-608E-467D-87C0-540AA0AF5AB6},1"
1998 }
1999 ]
2000 }
2001 }
2002 ]
2003 },
2004 "id": 1
2005 },
2006 {
2007 "edit": {
2008 "at": 134349951620000000,
2009 "ops": [
2010 {
2011 "Page": {
2012 "op": {
2013 "Add": {
2014 "before": null,
2015 "object": {
2016 "Outline": {
2017 "id": "{2A900876-A601-4591-B865-1DD52FFFDBE3},32",
2018 "indents": [],
2019 "layout": {
2020 "max_height": null,
2021 "max_width": null,
2022 "reserved_width": null,
2023 "width_set_by_user": null,
2024 "x": 36.0,
2025 "y": 36.0
2026 },
2027 "min_width": null,
2028 "paragraphs": [
2029 {
2030 "collapsed": false,
2031 "content": {
2032 "Text": {
2033 "date_field": null,
2034 "id": "{2A900876-A601-4591-B865-1DD52FFFDBE3},31",
2035 "tags": [],
2036 "text": {
2037 "spans": [
2038 {
2039 "end": 17,
2040 "format": {
2041 "alignment": null,
2042 "bold": null,
2043 "color": null,
2044 "embedded_object": null,
2045 "font": "Calibri",
2046 "font_size": 11.0,
2047 "hidden": null,
2048 "highlight": null,
2049 "hyperlink": null,
2050 "hyperlink_label": null,
2051 "italic": null,
2052 "language": 1033,
2053 "line_spacing": null,
2054 "list_spacing": null,
2055 "math": null,
2056 "math_object": null,
2057 "rtl": null,
2058 "space_after": null,
2059 "space_before": null,
2060 "strike": null,
2061 "subscript": null,
2062 "superscript": null,
2063 "underline": null
2064 }
2065 }
2066 ],
2067 "text": "Actor 10 🦀 é"
2068 }
2069 }
2070 },
2071 "format": {
2072 "alignment": null,
2073 "bold": null,
2074 "color": null,
2075 "embedded_object": null,
2076 "font": null,
2077 "font_size": null,
2078 "hidden": null,
2079 "highlight": null,
2080 "hyperlink": null,
2081 "hyperlink_label": null,
2082 "italic": null,
2083 "language": null,
2084 "line_spacing": null,
2085 "list_spacing": null,
2086 "math": null,
2087 "math_object": null,
2088 "rtl": null,
2089 "space_after": null,
2090 "space_before": null,
2091 "strike": null,
2092 "subscript": null,
2093 "superscript": null,
2094 "underline": null
2095 },
2096 "id": "{2A900876-A601-4591-B865-1DD52FFFDBE3},33",
2097 "level": 1,
2098 "lists": [],
2099 "media": {
2100 "recordings": [],
2101 "time_ms": null
2102 },
2103 "parent": null,
2104 "style": null,
2105 "tags": []
2106 }
2107 ],
2108 "title": false,
2109 "unsupported": []
2110 }
2111 }
2112 }
2113 },
2114 "space": "{7BAB3EDA-868E-4B41-AD61-B32D463AB3E0},1"
2115 }
2116 }
2117 ]
2118 },
2119 "id": 2
2120 }
2121 ],
2122 [
2123 {
2124 "edit": {
2125 "at": 133000000000000000,
2126 "ops": [
2127 {
2128 "Section": {
2129 "Pages": [
2130 {
2131 "guid": [
2132 141,
2133 240,
2134 28,
2135 163,
2136 72,
2137 70,
2138 7,
2139 72,
2140 187,
2141 241,
2142 188,
2143 124,
2144 179,
2145 164,
2146 65,
2147 183
2148 ],
2149 "level": 1,
2150 "position": {
2151 "Before": "{2EDB6F23-646D-4B69-A92A-14293B52E874},1"
2152 },
2153 "space": "{9F7A4423-B568-4CA7-BE9D-8003FAF044AD},1"
2154 },
2155 {
2156 "guid": [
2157 134,
2158 79,
2159 134,
2160 224,
2161 23,
2162 71,
2163 222,
2164 68,
2165 132,
2166 196,
2167 140,
2168 39,
2169 58,
2170 135,
2171 58,
2172 234
2173 ],
2174 "level": 2,
2175 "position": "Keep",
2176 "space": "{E455C07B-77AB-4D41-91AE-3CAD15027F85},1"
2177 }
2178 ]
2179 }
2180 }
2181 ]
2182 },
2183 "id": 1
2184 },
2185 {
2186 "edit": {
2187 "at": 134349951620000000,
2188 "ops": [
2189 {
2190 "Page": {
2191 "op": {
2192 "Add": {
2193 "before": null,
2194 "object": {
2195 "Outline": {
2196 "id": "{2A900876-A601-4591-B865-1DD52FFFDBE3},35",
2197 "indents": [],
2198 "layout": {
2199 "max_height": null,
2200 "max_width": null,
2201 "reserved_width": null,
2202 "width_set_by_user": null,
2203 "x": 36.0,
2204 "y": 36.0
2205 },
2206 "min_width": null,
2207 "paragraphs": [
2208 {
2209 "collapsed": false,
2210 "content": {
2211 "Text": {
2212 "date_field": null,
2213 "id": "{2A900876-A601-4591-B865-1DD52FFFDBE3},34",
2214 "tags": [],
2215 "text": {
2216 "spans": [
2217 {
2218 "end": 17,
2219 "format": {
2220 "alignment": null,
2221 "bold": null,
2222 "color": null,
2223 "embedded_object": null,
2224 "font": "Calibri",
2225 "font_size": 11.0,
2226 "hidden": null,
2227 "highlight": null,
2228 "hyperlink": null,
2229 "hyperlink_label": null,
2230 "italic": null,
2231 "language": 1033,
2232 "line_spacing": null,
2233 "list_spacing": null,
2234 "math": null,
2235 "math_object": null,
2236 "rtl": null,
2237 "space_after": null,
2238 "space_before": null,
2239 "strike": null,
2240 "subscript": null,
2241 "superscript": null,
2242 "underline": null
2243 }
2244 }
2245 ],
2246 "text": "Actor 11 🦀 é"
2247 }
2248 }
2249 },
2250 "format": {
2251 "alignment": null,
2252 "bold": null,
2253 "color": null,
2254 "embedded_object": null,
2255 "font": null,
2256 "font_size": null,
2257 "hidden": null,
2258 "highlight": null,
2259 "hyperlink": null,
2260 "hyperlink_label": null,
2261 "italic": null,
2262 "language": null,
2263 "line_spacing": null,
2264 "list_spacing": null,
2265 "math": null,
2266 "math_object": null,
2267 "rtl": null,
2268 "space_after": null,
2269 "space_before": null,
2270 "strike": null,
2271 "subscript": null,
2272 "superscript": null,
2273 "underline": null
2274 },
2275 "id": "{2A900876-A601-4591-B865-1DD52FFFDBE3},36",
2276 "level": 1,
2277 "lists": [],
2278 "media": {
2279 "recordings": [],
2280 "time_ms": null
2281 },
2282 "parent": null,
2283 "style": null,
2284 "tags": []
2285 }
2286 ],
2287 "title": false,
2288 "unsupported": []
2289 }
2290 }
2291 }
2292 },
2293 "space": "{9F7A4423-B568-4CA7-BE9D-8003FAF044AD},1"
2294 }
2295 }
2296 ]
2297 },
2298 "id": 2
2299 }
2300 ]
2301 ],
2302 "pages": 37,
2303 "publications": 12
2304}
\ No newline at end of file
corpus/page-lifecycle/offline-edits-series/twelve-clients/candidate/pages.one created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/twelve-clients/candidate/pages.one differ
corpus/page-lifecycle/offline-edits-series/twelve-clients/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-D9F15303 -ExpectedPages 37", "exit": 0, "stdout": "Read 1 sections and 37 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-lifecycle/offline-edits-series/twelve-clients/cold/machine.json created+1
......@@ -0,0 +1 @@
1{"name": "m6-d9f15303", "hostname": "ONE-M6-D9F15303"}
corpus/page-lifecycle/offline-edits-series/twelve-clients/cold/notebook/Open Notebook.onetoc2 created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/twelve-clients/cold/notebook/Open Notebook.onetoc2 differ
corpus/page-lifecycle/offline-edits-series/twelve-clients/cold/notebook/pages.one created
Binary files /dev/null and b/corpus/page-lifecycle/offline-edits-series/twelve-clients/cold/notebook/pages.one differ
corpus/page-lifecycle/offline-edits-series/twelve-clients/cold/read/environment.json created+7
......@@ -0,0 +1,7 @@
1{
2 "powershell": "5.1.14409.1005",
3 "schema": "xs2010",
4 "hostname": "ONE-M6-D9F15303",
5 "cold": true,
6 "onenote": "14.0.4763.1000"
7}
corpus/page-lifecycle/offline-edits-series/twelve-clients/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="{5E384181-5FEE-4705-AE0B-87BA8EEDA738}{1}{B0}" path="C:\one-tests\runs\capture\notebook" lastModifiedTime="2026-09-27T15:49:01.000Z" color="#B49EDE"><one:Section name="pages" ID="{089CCD97-AE55-0741-09EE-322ED85608DB}{1}{B0}" path="C:\one-tests\runs\capture\notebook\pages.one" lastModifiedTime="2026-09-27T15:49:01.000Z" color="#8AA8E4"><one:Page ID="{0BFA7ED6-0630-0117-1368-67343E912257}{1}{B0}" name="Sentinel" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:51.000Z" pageLevel="1"/><one:Page ID="{CD569F84-56EC-06BC-19F3-633D7FC19403}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:51.000Z" pageLevel="1"/><one:Page ID="{B00AC232-1760-01E8-1B97-6E125612F519}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:51.000Z" pageLevel="1"/><one:Page ID="{6899DECC-3707-0BA3-395E-02F446F60014}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:51.000Z" pageLevel="2"/><one:Page ID="{87A3B1D0-FC3E-029C-016D-2E37C7D7E22F}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:51.000Z" pageLevel="1"/><one:Page ID="{76A5B994-E9B8-0502-0566-DC0C65B1DF8D}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:51.000Z" pageLevel="1"/><one:Page ID="{C4EAB6D8-97C2-01FC-0D88-F8B6F45A8D78}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:51.000Z" pageLevel="2"/><one:Page ID="{20FE0922-23BE-00AA-3BB3-C8F04AD37392}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:51.000Z" pageLevel="1"/><one:Page ID="{3EE65B8B-45B8-0377-0D62-24C4C914DEA8}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:51.000Z" pageLevel="1"/><one:Page ID="{0BC11570-9454-0161-2490-2DEE533791A5}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:51.000Z" pageLevel="2"/><one:Page ID="{44848439-E323-0BDB-163C-BE294B370128}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:51.000Z" pageLevel="1"/><one:Page ID="{F9FB7C01-0C39-0327-2E1A-DC5EF8139862}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:51.000Z" pageLevel="1"/><one:Page ID="{55F01B1B-12D5-0633-21EB-900C66775388}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:52.000Z" pageLevel="2"/><one:Page ID="{BAF26D88-1855-0EDD-3E04-AF1D64052238}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:52.000Z" pageLevel="1"/><one:Page ID="{105E2FFF-9B08-0C0B-0232-D2B990D0C0AB}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:52.000Z" pageLevel="1"/><one:Page ID="{8B8ABFF6-4300-0FAB-134A-1FAE3DA52BD4}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:52.000Z" pageLevel="2"/><one:Page ID="{4A83589E-51A1-0BD8-3D77-A6DEADC3CF09}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:52.000Z" pageLevel="1"/><one:Page ID="{49647654-1F9A-090C-0A23-FB3F4CAC53F2}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:52.000Z" pageLevel="1"/><one:Page ID="{0F995DE9-9D71-0D98-0AC6-ADB8718453CB}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:52.000Z" pageLevel="2"/><one:Page ID="{6BB65271-FAF1-00A6-397B-0514E39FDEA7}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:52.000Z" pageLevel="1"/><one:Page ID="{C82A46B3-FD88-0A41-1C3A-CE65F62D4A7A}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:52.000Z" pageLevel="1"/><one:Page ID="{4D783FA2-5C81-0BA3-1F90-31B73D11E0A1}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:52.000Z" pageLevel="2"/><one:Page ID="{58CFC234-88C2-0E53-3377-E1CF95F61F13}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:52.000Z" pageLevel="1"/><one:Page ID="{8D9B9018-4B15-0536-17F5-361799E0052C}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:52.000Z" pageLevel="1"/><one:Page ID="{E10F04BE-3DB3-0D00-1653-3EE09A132638}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:52.000Z" pageLevel="2"/><one:Page ID="{E4C2BA9B-AC9F-0590-318B-06983802254A}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:52.000Z" pageLevel="1"/><one:Page ID="{579E216B-CE51-07A6-1149-44884C244597}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:52.000Z" pageLevel="1"/><one:Page ID="{6EF1C9AF-17E1-0442-26FE-E50B8CA1DBA0}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:52.000Z" pageLevel="2"/><one:Page ID="{F2C67AC0-AD99-0CCD-1F81-C3CFE6C532EB}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:52.000Z" pageLevel="1"/><one:Page ID="{BB97B9A9-2104-0BBF-3066-ADC3A8286827}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:52.000Z" pageLevel="1"/><one:Page ID="{ED8C625E-FBBD-001A-1EBF-C85CFBBEDD5E}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:52.000Z" pageLevel="2"/><one:Page ID="{0F141605-AB51-019D-1743-DBF7B6CA6366}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:52.000Z" pageLevel="1"/><one:Page ID="{C9400EB0-FE84-0ED4-0C06-DB1F2E6D3C6B}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:52.000Z" pageLevel="1"/><one:Page ID="{31350F38-4D51-0CA1-3DE2-3CD0505F8A30}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:52.000Z" pageLevel="2"/><one:Page ID="{EBC56CFC-98B7-067B-04BF-E8D90A00942B}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:52.000Z" pageLevel="1"/><one:Page ID="{5A6447FC-49B2-01B5-1308-7CF3CBA238F2}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:52.000Z" pageLevel="1"/><one:Page ID="{90EAE8A4-5A74-079D-2B8C-5477E5F2AF03}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:52.000Z" pageLevel="2"/></one:Section></one:Notebook>
corpus/page-lifecycle/offline-edits-series/twelve-clients/cold/read/page-000.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{0BC11570-9454-0161-2490-2DEE533791A5}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:51.000Z" pageLevel="2"><one:QuickStyleDef index="0" name="PageTitle" font="Calibri" fontSize="17.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title showDate="false" showTime="false" lang="en-US"><one:OE author="Author" authorInitials="A" lastModifiedBy="Author" lastModifiedByInitials="A" creationTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:06:00.000Z" objectID="{0BC11570-9454-0161-2490-2DEE533791A5}{15}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/twelve-clients/cold/read/page-001.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{0BFA7ED6-0630-0117-1368-67343E912257}{1}{B0}" name="Sentinel" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:51.000Z" pageLevel="1" style="font-family:Calibri;font-size:11.0pt" lang="en-US"><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Outline author="Author" authorInitials="A" lastModifiedBy="Author" lastModifiedByInitials="A" lastModifiedTime="2026-09-27T15:06:00.000Z" objectID="{089CCD97-AE55-0741-09EE-322ED85608DB}{23}{B0}"><one:Position x="36.0" y="36.0" z="0"/><one:Size width="76.04243469238281" height="13.4277172088623"/><one:OEChildren><one:OE creationTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:06:00.000Z" objectID="{089CCD97-AE55-0741-09EE-322ED85608DB}{24}{B0}" alignment="left"><one:T><![CDATA[Sentinel]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/twelve-clients/cold/read/page-002.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{0F141605-AB51-019D-1743-DBF7B6CA6366}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:52.000Z" pageLevel="1" style="font-family:Calibri;font-size:11.0pt" lang="en-US"><one:QuickStyleDef index="0" name="PageTitle" font="Calibri" fontSize="17.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title showDate="false" showTime="false" lang="en-US"><one:OE author="Author" authorInitials="A" lastModifiedBy="Author" lastModifiedByInitials="A" creationTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:06:00.000Z" objectID="{0F141605-AB51-019D-1743-DBF7B6CA6366}{15}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title><one:Outline author="Author" authorInitials="A" lastModifiedBy="Author" lastModifiedByInitials="A" lastModifiedTime="2026-09-27T15:06:02.000Z" objectID="{5E2F20A9-8BDE-0F4D-0247-750FDF0F0B65}{32}{B0}"><one:Position x="36.0" y="36.0" z="0"/><one:Size width="93.74566650390624" height="13.4277172088623"/><one:OEChildren><one:OE creationTime="2026-09-27T15:06:02.000Z" lastModifiedTime="2026-09-27T15:06:02.000Z" objectID="{5E2F20A9-8BDE-0F4D-0247-750FDF0F0B65}{33}{B0}" alignment="left"><one:T><![CDATA[Actor 10 &#129408; é]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/twelve-clients/cold/read/page-003.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{0F995DE9-9D71-0D98-0AC6-ADB8718453CB}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:52.000Z" pageLevel="2"><one:QuickStyleDef index="0" name="PageTitle" font="Calibri" fontSize="17.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title showDate="false" showTime="false" lang="en-US"><one:OE author="Author" authorInitials="A" lastModifiedBy="Author" lastModifiedByInitials="A" creationTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:06:00.000Z" objectID="{0F995DE9-9D71-0D98-0AC6-ADB8718453CB}{15}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/twelve-clients/cold/read/page-004.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{105E2FFF-9B08-0C0B-0232-D2B990D0C0AB}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:52.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" font="Calibri" fontSize="17.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title showDate="false" showTime="false" lang="en-US"><one:OE author="Author" authorInitials="A" lastModifiedBy="Author" lastModifiedByInitials="A" creationTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:06:00.000Z" objectID="{105E2FFF-9B08-0C0B-0232-D2B990D0C0AB}{15}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/twelve-clients/cold/read/page-005.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{20FE0922-23BE-00AA-3BB3-C8F04AD37392}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:51.000Z" pageLevel="1" style="font-family:Calibri;font-size:11.0pt" lang="en-US"><one:QuickStyleDef index="0" name="PageTitle" font="Calibri" fontSize="17.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title showDate="false" showTime="false" lang="en-US"><one:OE author="Author" authorInitials="A" lastModifiedBy="Author" lastModifiedByInitials="A" creationTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:06:00.000Z" objectID="{20FE0922-23BE-00AA-3BB3-C8F04AD37392}{15}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title><one:Outline author="Author" authorInitials="A" lastModifiedBy="Author" lastModifiedByInitials="A" lastModifiedTime="2026-09-27T15:06:01.000Z" objectID="{5E2F20A9-8BDE-0F4D-0247-750FDF0F0B65}{8}{B0}"><one:Position x="36.0" y="36.0" z="0"/><one:Size width="88.17046356201172" height="13.4277172088623"/><one:OEChildren><one:OE creationTime="2026-09-27T15:06:01.000Z" lastModifiedTime="2026-09-27T15:06:01.000Z" objectID="{5E2F20A9-8BDE-0F4D-0247-750FDF0F0B65}{9}{B0}" alignment="left"><one:T><![CDATA[Actor 2 &#129408; é]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/twelve-clients/cold/read/page-006.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{31350F38-4D51-0CA1-3DE2-3CD0505F8A30}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:52.000Z" pageLevel="2"><one:QuickStyleDef index="0" name="PageTitle" font="Calibri" fontSize="17.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title showDate="false" showTime="false" lang="en-US"><one:OE author="Author" authorInitials="A" lastModifiedBy="Author" lastModifiedByInitials="A" creationTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:06:00.000Z" objectID="{31350F38-4D51-0CA1-3DE2-3CD0505F8A30}{15}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/twelve-clients/cold/read/page-007.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{3EE65B8B-45B8-0377-0D62-24C4C914DEA8}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:51.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" font="Calibri" fontSize="17.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title showDate="false" showTime="false" lang="en-US"><one:OE author="Author" authorInitials="A" lastModifiedBy="Author" lastModifiedByInitials="A" creationTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:06:00.000Z" objectID="{3EE65B8B-45B8-0377-0D62-24C4C914DEA8}{15}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/twelve-clients/cold/read/page-008.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{44848439-E323-0BDB-163C-BE294B370128}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:51.000Z" pageLevel="1" style="font-family:Calibri;font-size:11.0pt" lang="en-US"><one:QuickStyleDef index="0" name="PageTitle" font="Calibri" fontSize="17.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title showDate="false" showTime="false" lang="en-US"><one:OE author="Author" authorInitials="A" lastModifiedBy="Author" lastModifiedByInitials="A" creationTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:06:00.000Z" objectID="{44848439-E323-0BDB-163C-BE294B370128}{15}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title><one:Outline author="Author" authorInitials="A" lastModifiedBy="Author" lastModifiedByInitials="A" lastModifiedTime="2026-09-27T15:06:01.000Z" objectID="{5E2F20A9-8BDE-0F4D-0247-750FDF0F0B65}{11}{B0}"><one:Position x="36.0" y="36.0" z="0"/><one:Size width="88.17046356201172" height="13.4277172088623"/><one:OEChildren><one:OE creationTime="2026-09-27T15:06:01.000Z" lastModifiedTime="2026-09-27T15:06:01.000Z" objectID="{5E2F20A9-8BDE-0F4D-0247-750FDF0F0B65}{12}{B0}" alignment="left"><one:T><![CDATA[Actor 3 &#129408; é]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/twelve-clients/cold/read/page-009.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{49647654-1F9A-090C-0A23-FB3F4CAC53F2}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:52.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" font="Calibri" fontSize="17.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title showDate="false" showTime="false" lang="en-US"><one:OE author="Author" authorInitials="A" lastModifiedBy="Author" lastModifiedByInitials="A" creationTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:06:00.000Z" objectID="{49647654-1F9A-090C-0A23-FB3F4CAC53F2}{15}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/twelve-clients/cold/read/page-010.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{4A83589E-51A1-0BD8-3D77-A6DEADC3CF09}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:52.000Z" pageLevel="1" style="font-family:Calibri;font-size:11.0pt" lang="en-US"><one:QuickStyleDef index="0" name="PageTitle" font="Calibri" fontSize="17.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title showDate="false" showTime="false" lang="en-US"><one:OE author="Author" authorInitials="A" lastModifiedBy="Author" lastModifiedByInitials="A" creationTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:06:00.000Z" objectID="{4A83589E-51A1-0BD8-3D77-A6DEADC3CF09}{15}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title><one:Outline author="Author" authorInitials="A" lastModifiedBy="Author" lastModifiedByInitials="A" lastModifiedTime="2026-09-27T15:06:01.000Z" objectID="{5E2F20A9-8BDE-0F4D-0247-750FDF0F0B65}{17}{B0}"><one:Position x="36.0" y="36.0" z="0"/><one:Size width="88.17046356201172" height="13.4277172088623"/><one:OEChildren><one:OE creationTime="2026-09-27T15:06:01.000Z" lastModifiedTime="2026-09-27T15:06:01.000Z" objectID="{5E2F20A9-8BDE-0F4D-0247-750FDF0F0B65}{18}{B0}" alignment="left"><one:T><![CDATA[Actor 5 &#129408; é]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/twelve-clients/cold/read/page-011.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{4D783FA2-5C81-0BA3-1F90-31B73D11E0A1}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:52.000Z" pageLevel="2"><one:QuickStyleDef index="0" name="PageTitle" font="Calibri" fontSize="17.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title showDate="false" showTime="false" lang="en-US"><one:OE author="Author" authorInitials="A" lastModifiedBy="Author" lastModifiedByInitials="A" creationTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:06:00.000Z" objectID="{4D783FA2-5C81-0BA3-1F90-31B73D11E0A1}{15}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/twelve-clients/cold/read/page-012.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{55F01B1B-12D5-0633-21EB-900C66775388}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:52.000Z" pageLevel="2"><one:QuickStyleDef index="0" name="PageTitle" font="Calibri" fontSize="17.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title showDate="false" showTime="false" lang="en-US"><one:OE author="Author" authorInitials="A" lastModifiedBy="Author" lastModifiedByInitials="A" creationTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:06:00.000Z" objectID="{55F01B1B-12D5-0633-21EB-900C66775388}{15}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/twelve-clients/cold/read/page-013.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{579E216B-CE51-07A6-1149-44884C244597}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:52.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" font="Calibri" fontSize="17.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title showDate="false" showTime="false" lang="en-US"><one:OE author="Author" authorInitials="A" lastModifiedBy="Author" lastModifiedByInitials="A" creationTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:06:00.000Z" objectID="{579E216B-CE51-07A6-1149-44884C244597}{15}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/twelve-clients/cold/read/page-014.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{58CFC234-88C2-0E53-3377-E1CF95F61F13}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:52.000Z" pageLevel="1" style="font-family:Calibri;font-size:11.0pt" lang="en-US"><one:QuickStyleDef index="0" name="PageTitle" font="Calibri" fontSize="17.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title showDate="false" showTime="false" lang="en-US"><one:OE author="Author" authorInitials="A" lastModifiedBy="Author" lastModifiedByInitials="A" creationTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:06:00.000Z" objectID="{58CFC234-88C2-0E53-3377-E1CF95F61F13}{15}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title><one:Outline author="Author" authorInitials="A" lastModifiedBy="Author" lastModifiedByInitials="A" lastModifiedTime="2026-09-27T15:06:01.000Z" objectID="{5E2F20A9-8BDE-0F4D-0247-750FDF0F0B65}{23}{B0}"><one:Position x="36.0" y="36.0" z="0"/><one:Size width="88.17046356201172" height="13.4277172088623"/><one:OEChildren><one:OE creationTime="2026-09-27T15:06:01.000Z" lastModifiedTime="2026-09-27T15:06:01.000Z" objectID="{5E2F20A9-8BDE-0F4D-0247-750FDF0F0B65}{24}{B0}" alignment="left"><one:T><![CDATA[Actor 7 &#129408; é]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/twelve-clients/cold/read/page-015.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{5A6447FC-49B2-01B5-1308-7CF3CBA238F2}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:52.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" font="Calibri" fontSize="17.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title showDate="false" showTime="false" lang="en-US"><one:OE author="Author" authorInitials="A" lastModifiedBy="Author" lastModifiedByInitials="A" creationTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:06:00.000Z" objectID="{5A6447FC-49B2-01B5-1308-7CF3CBA238F2}{15}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/twelve-clients/cold/read/page-016.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{6899DECC-3707-0BA3-395E-02F446F60014}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:51.000Z" pageLevel="2"><one:QuickStyleDef index="0" name="PageTitle" font="Calibri" fontSize="17.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title showDate="false" showTime="false" lang="en-US"><one:OE author="Author" authorInitials="A" lastModifiedBy="Author" lastModifiedByInitials="A" creationTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:06:00.000Z" objectID="{6899DECC-3707-0BA3-395E-02F446F60014}{15}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/twelve-clients/cold/read/page-017.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{6BB65271-FAF1-00A6-397B-0514E39FDEA7}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:52.000Z" pageLevel="1" style="font-family:Calibri;font-size:11.0pt" lang="en-US"><one:QuickStyleDef index="0" name="PageTitle" font="Calibri" fontSize="17.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title showDate="false" showTime="false" lang="en-US"><one:OE author="Author" authorInitials="A" lastModifiedBy="Author" lastModifiedByInitials="A" creationTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:06:00.000Z" objectID="{6BB65271-FAF1-00A6-397B-0514E39FDEA7}{15}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title><one:Outline author="Author" authorInitials="A" lastModifiedBy="Author" lastModifiedByInitials="A" lastModifiedTime="2026-09-27T15:06:01.000Z" objectID="{5E2F20A9-8BDE-0F4D-0247-750FDF0F0B65}{20}{B0}"><one:Position x="36.0" y="36.0" z="0"/><one:Size width="88.17046356201172" height="13.4277172088623"/><one:OEChildren><one:OE creationTime="2026-09-27T15:06:01.000Z" lastModifiedTime="2026-09-27T15:06:01.000Z" objectID="{5E2F20A9-8BDE-0F4D-0247-750FDF0F0B65}{21}{B0}" alignment="left"><one:T><![CDATA[Actor 6 &#129408; é]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/twelve-clients/cold/read/page-018.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{6EF1C9AF-17E1-0442-26FE-E50B8CA1DBA0}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:52.000Z" pageLevel="2"><one:QuickStyleDef index="0" name="PageTitle" font="Calibri" fontSize="17.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title showDate="false" showTime="false" lang="en-US"><one:OE author="Author" authorInitials="A" lastModifiedBy="Author" lastModifiedByInitials="A" creationTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:06:00.000Z" objectID="{6EF1C9AF-17E1-0442-26FE-E50B8CA1DBA0}{15}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/twelve-clients/cold/read/page-019.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{76A5B994-E9B8-0502-0566-DC0C65B1DF8D}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:51.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" font="Calibri" fontSize="17.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title showDate="false" showTime="false" lang="en-US"><one:OE author="Author" authorInitials="A" lastModifiedBy="Author" lastModifiedByInitials="A" creationTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:06:00.000Z" objectID="{76A5B994-E9B8-0502-0566-DC0C65B1DF8D}{15}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/twelve-clients/cold/read/page-020.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{87A3B1D0-FC3E-029C-016D-2E37C7D7E22F}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:51.000Z" pageLevel="1" style="font-family:Calibri;font-size:11.0pt" lang="en-US"><one:QuickStyleDef index="0" name="PageTitle" font="Calibri" fontSize="17.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title showDate="false" showTime="false" lang="en-US"><one:OE author="Author" authorInitials="A" lastModifiedBy="Author" lastModifiedByInitials="A" creationTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:06:00.000Z" objectID="{87A3B1D0-FC3E-029C-016D-2E37C7D7E22F}{15}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title><one:Outline author="Author" authorInitials="A" lastModifiedBy="Author" lastModifiedByInitials="A" lastModifiedTime="2026-09-27T15:06:00.000Z" objectID="{5E2F20A9-8BDE-0F4D-0247-750FDF0F0B65}{5}{B0}"><one:Position x="36.0" y="36.0" z="0"/><one:Size width="88.17046356201172" height="13.4277172088623"/><one:OEChildren><one:OE creationTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:06:00.000Z" objectID="{5E2F20A9-8BDE-0F4D-0247-750FDF0F0B65}{6}{B0}" alignment="left"><one:T><![CDATA[Actor 1 &#129408; é]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/twelve-clients/cold/read/page-021.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{8B8ABFF6-4300-0FAB-134A-1FAE3DA52BD4}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:52.000Z" pageLevel="2"><one:QuickStyleDef index="0" name="PageTitle" font="Calibri" fontSize="17.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title showDate="false" showTime="false" lang="en-US"><one:OE author="Author" authorInitials="A" lastModifiedBy="Author" lastModifiedByInitials="A" creationTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:06:00.000Z" objectID="{8B8ABFF6-4300-0FAB-134A-1FAE3DA52BD4}{15}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/twelve-clients/cold/read/page-022.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{8D9B9018-4B15-0536-17F5-361799E0052C}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:52.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" font="Calibri" fontSize="17.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title showDate="false" showTime="false" lang="en-US"><one:OE author="Author" authorInitials="A" lastModifiedBy="Author" lastModifiedByInitials="A" creationTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:06:00.000Z" objectID="{8D9B9018-4B15-0536-17F5-361799E0052C}{15}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/twelve-clients/cold/read/page-023.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{90EAE8A4-5A74-079D-2B8C-5477E5F2AF03}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:52.000Z" pageLevel="2"><one:QuickStyleDef index="0" name="PageTitle" font="Calibri" fontSize="17.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title showDate="false" showTime="false" lang="en-US"><one:OE author="Author" authorInitials="A" lastModifiedBy="Author" lastModifiedByInitials="A" creationTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:06:00.000Z" objectID="{90EAE8A4-5A74-079D-2B8C-5477E5F2AF03}{15}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/twelve-clients/cold/read/page-024.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{B00AC232-1760-01E8-1B97-6E125612F519}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:51.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" font="Calibri" fontSize="17.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title showDate="false" showTime="false" lang="en-US"><one:OE author="Author" authorInitials="A" lastModifiedBy="Author" lastModifiedByInitials="A" creationTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:06:00.000Z" objectID="{B00AC232-1760-01E8-1B97-6E125612F519}{15}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/twelve-clients/cold/read/page-025.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{BAF26D88-1855-0EDD-3E04-AF1D64052238}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:52.000Z" pageLevel="1" style="font-family:Calibri;font-size:11.0pt" lang="en-US"><one:QuickStyleDef index="0" name="PageTitle" font="Calibri" fontSize="17.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title showDate="false" showTime="false" lang="en-US"><one:OE author="Author" authorInitials="A" lastModifiedBy="Author" lastModifiedByInitials="A" creationTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:06:00.000Z" objectID="{BAF26D88-1855-0EDD-3E04-AF1D64052238}{15}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title><one:Outline author="Author" authorInitials="A" lastModifiedBy="Author" lastModifiedByInitials="A" lastModifiedTime="2026-09-27T15:06:01.000Z" objectID="{5E2F20A9-8BDE-0F4D-0247-750FDF0F0B65}{14}{B0}"><one:Position x="36.0" y="36.0" z="0"/><one:Size width="88.17046356201172" height="13.4277172088623"/><one:OEChildren><one:OE creationTime="2026-09-27T15:06:01.000Z" lastModifiedTime="2026-09-27T15:06:01.000Z" objectID="{5E2F20A9-8BDE-0F4D-0247-750FDF0F0B65}{15}{B0}" alignment="left"><one:T><![CDATA[Actor 4 &#129408; é]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/twelve-clients/cold/read/page-026.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{BB97B9A9-2104-0BBF-3066-ADC3A8286827}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:52.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" font="Calibri" fontSize="17.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title showDate="false" showTime="false" lang="en-US"><one:OE author="Author" authorInitials="A" lastModifiedBy="Author" lastModifiedByInitials="A" creationTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:06:00.000Z" objectID="{BB97B9A9-2104-0BBF-3066-ADC3A8286827}{15}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/twelve-clients/cold/read/page-027.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{C4EAB6D8-97C2-01FC-0D88-F8B6F45A8D78}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:51.000Z" pageLevel="2"><one:QuickStyleDef index="0" name="PageTitle" font="Calibri" fontSize="17.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title showDate="false" showTime="false" lang="en-US"><one:OE author="Author" authorInitials="A" lastModifiedBy="Author" lastModifiedByInitials="A" creationTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:06:00.000Z" objectID="{C4EAB6D8-97C2-01FC-0D88-F8B6F45A8D78}{15}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/twelve-clients/cold/read/page-028.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{C82A46B3-FD88-0A41-1C3A-CE65F62D4A7A}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:52.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" font="Calibri" fontSize="17.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title showDate="false" showTime="false" lang="en-US"><one:OE author="Author" authorInitials="A" lastModifiedBy="Author" lastModifiedByInitials="A" creationTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:06:00.000Z" objectID="{C82A46B3-FD88-0A41-1C3A-CE65F62D4A7A}{15}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/twelve-clients/cold/read/page-029.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{C9400EB0-FE84-0ED4-0C06-DB1F2E6D3C6B}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:52.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" font="Calibri" fontSize="17.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title showDate="false" showTime="false" lang="en-US"><one:OE author="Author" authorInitials="A" lastModifiedBy="Author" lastModifiedByInitials="A" creationTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:06:00.000Z" objectID="{C9400EB0-FE84-0ED4-0C06-DB1F2E6D3C6B}{15}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/twelve-clients/cold/read/page-030.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{CD569F84-56EC-06BC-19F3-633D7FC19403}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:51.000Z" pageLevel="1" style="font-family:Calibri;font-size:11.0pt" lang="en-US"><one:QuickStyleDef index="0" name="PageTitle" font="Calibri" fontSize="17.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title showDate="false" showTime="false" lang="en-US"><one:OE author="Author" authorInitials="A" lastModifiedBy="Author" lastModifiedByInitials="A" creationTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:06:00.000Z" objectID="{CD569F84-56EC-06BC-19F3-633D7FC19403}{15}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title><one:Outline author="Author" authorInitials="A" lastModifiedBy="Author" lastModifiedByInitials="A" lastModifiedTime="2026-09-27T15:06:00.000Z" objectID="{5E2F20A9-8BDE-0F4D-0247-750FDF0F0B65}{2}{B0}"><one:Position x="36.0" y="36.0" z="0"/><one:Size width="88.17046356201172" height="13.4277172088623"/><one:OEChildren><one:OE creationTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:06:00.000Z" objectID="{5E2F20A9-8BDE-0F4D-0247-750FDF0F0B65}{3}{B0}" alignment="left"><one:T><![CDATA[Actor 0 &#129408; é]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/twelve-clients/cold/read/page-031.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{E10F04BE-3DB3-0D00-1653-3EE09A132638}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:52.000Z" pageLevel="2"><one:QuickStyleDef index="0" name="PageTitle" font="Calibri" fontSize="17.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title showDate="false" showTime="false" lang="en-US"><one:OE author="Author" authorInitials="A" lastModifiedBy="Author" lastModifiedByInitials="A" creationTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:06:00.000Z" objectID="{E10F04BE-3DB3-0D00-1653-3EE09A132638}{15}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/twelve-clients/cold/read/page-032.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{E4C2BA9B-AC9F-0590-318B-06983802254A}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:52.000Z" pageLevel="1" style="font-family:Calibri;font-size:11.0pt" lang="en-US"><one:QuickStyleDef index="0" name="PageTitle" font="Calibri" fontSize="17.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title showDate="false" showTime="false" lang="en-US"><one:OE author="Author" authorInitials="A" lastModifiedBy="Author" lastModifiedByInitials="A" creationTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:06:00.000Z" objectID="{E4C2BA9B-AC9F-0590-318B-06983802254A}{15}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title><one:Outline author="Author" authorInitials="A" lastModifiedBy="Author" lastModifiedByInitials="A" lastModifiedTime="2026-09-27T15:06:02.000Z" objectID="{5E2F20A9-8BDE-0F4D-0247-750FDF0F0B65}{26}{B0}"><one:Position x="36.0" y="36.0" z="0"/><one:Size width="88.17046356201172" height="13.4277172088623"/><one:OEChildren><one:OE creationTime="2026-09-27T15:06:02.000Z" lastModifiedTime="2026-09-27T15:06:02.000Z" objectID="{5E2F20A9-8BDE-0F4D-0247-750FDF0F0B65}{27}{B0}" alignment="left"><one:T><![CDATA[Actor 8 &#129408; é]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/twelve-clients/cold/read/page-033.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{EBC56CFC-98B7-067B-04BF-E8D90A00942B}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:52.000Z" pageLevel="1" style="font-family:Calibri;font-size:11.0pt" lang="en-US"><one:QuickStyleDef index="0" name="PageTitle" font="Calibri" fontSize="17.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title showDate="false" showTime="false" lang="en-US"><one:OE author="Author" authorInitials="A" lastModifiedBy="Author" lastModifiedByInitials="A" creationTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:06:00.000Z" objectID="{EBC56CFC-98B7-067B-04BF-E8D90A00942B}{15}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title><one:Outline author="Author" authorInitials="A" lastModifiedBy="Author" lastModifiedByInitials="A" lastModifiedTime="2026-09-27T15:06:02.000Z" objectID="{5E2F20A9-8BDE-0F4D-0247-750FDF0F0B65}{35}{B0}"><one:Position x="36.0" y="36.0" z="0"/><one:Size width="93.74566650390624" height="13.4277172088623"/><one:OEChildren><one:OE creationTime="2026-09-27T15:06:02.000Z" lastModifiedTime="2026-09-27T15:06:02.000Z" objectID="{5E2F20A9-8BDE-0F4D-0247-750FDF0F0B65}{36}{B0}" alignment="left"><one:T><![CDATA[Actor 11 &#129408; é]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/twelve-clients/cold/read/page-034.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{ED8C625E-FBBD-001A-1EBF-C85CFBBEDD5E}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:52.000Z" pageLevel="2"><one:QuickStyleDef index="0" name="PageTitle" font="Calibri" fontSize="17.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title showDate="false" showTime="false" lang="en-US"><one:OE author="Author" authorInitials="A" lastModifiedBy="Author" lastModifiedByInitials="A" creationTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:06:00.000Z" objectID="{ED8C625E-FBBD-001A-1EBF-C85CFBBEDD5E}{15}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/twelve-clients/cold/read/page-035.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{F2C67AC0-AD99-0CCD-1F81-C3CFE6C532EB}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:52.000Z" pageLevel="1" style="font-family:Calibri;font-size:11.0pt" lang="en-US"><one:QuickStyleDef index="0" name="PageTitle" font="Calibri" fontSize="17.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title showDate="false" showTime="false" lang="en-US"><one:OE author="Author" authorInitials="A" lastModifiedBy="Author" lastModifiedByInitials="A" creationTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:06:00.000Z" objectID="{F2C67AC0-AD99-0CCD-1F81-C3CFE6C532EB}{15}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title><one:Outline author="Author" authorInitials="A" lastModifiedBy="Author" lastModifiedByInitials="A" lastModifiedTime="2026-09-27T15:06:02.000Z" objectID="{5E2F20A9-8BDE-0F4D-0247-750FDF0F0B65}{29}{B0}"><one:Position x="36.0" y="36.0" z="0"/><one:Size width="88.17046356201172" height="13.4277172088623"/><one:OEChildren><one:OE creationTime="2026-09-27T15:06:02.000Z" lastModifiedTime="2026-09-27T15:06:02.000Z" objectID="{5E2F20A9-8BDE-0F4D-0247-750FDF0F0B65}{30}{B0}" alignment="left"><one:T><![CDATA[Actor 9 &#129408; é]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/offline-edits-series/twelve-clients/cold/read/page-036.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{F9FB7C01-0C39-0327-2E1A-DC5EF8139862}{1}{B0}" name="Same title" dateTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:48:51.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" font="Calibri" fontSize="17.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title showDate="false" showTime="false" lang="en-US"><one:OE author="Author" authorInitials="A" lastModifiedBy="Author" lastModifiedByInitials="A" creationTime="2026-09-27T15:06:00.000Z" lastModifiedTime="2026-09-27T15:06:00.000Z" objectID="{F9FB7C01-0C39-0327-2E1A-DC5EF8139862}{15}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/offline-edits-series/twelve-clients/cold/read/payloads.json created+3
......@@ -0,0 +1,3 @@
1[
2
3]
\ No newline at end of file
corpus/page-lifecycle/offline-edits-series/twelve-clients/cold/run.json created+18
......@@ -0,0 +1,18 @@
1{
2 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmpqs9m09lz",
3 "expected_pages": 37,
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-lifecycle/offline-edits-series/twelve-clients/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-lifecycle/offline-edits-series/twelve-clients/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-lifecycle/offline-edits-series/twelve-clients/cold/source.json created+8
......@@ -0,0 +1,8 @@
1[
2 {
3 "path": "pages.one",
4 "bytes": 159240,
5 "sha256": "dba31b100d591e034dd53a5eaca768b2d104c6c7e005c1ab9d3fee9a9791bcfd",
6 "mtime_ns": 1790522182609793250
7 }
8]
corpus/page-lifecycle/offline-edits-series/twelve-clients/cold/teardown.json created+1
......@@ -0,0 +1 @@
1{"absent": true}
corpus/page-lifecycle/page-edits-series/03-selected-group-move/candidate/Lifecycle.one created
Binary files /dev/null and b/corpus/page-lifecycle/page-edits-series/03-selected-group-move/candidate/Lifecycle.one differ
corpus/page-lifecycle/page-edits-series/03-selected-group-move/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-161C24F1 -ExpectedPages 9", "exit": 0, "stdout": "Read 1 sections and 9 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-lifecycle/page-edits-series/03-selected-group-move/cold/machine.json created+1
......@@ -0,0 +1 @@
1{"name": "m6-161c24f1", "hostname": "ONE-M6-161C24F1"}
corpus/page-lifecycle/page-edits-series/03-selected-group-move/cold/notebook/Lifecycle.one created
Binary files /dev/null and b/corpus/page-lifecycle/page-edits-series/03-selected-group-move/cold/notebook/Lifecycle.one differ
corpus/page-lifecycle/page-edits-series/03-selected-group-move/cold/notebook/Open Notebook.onetoc2 created
Binary files /dev/null and b/corpus/page-lifecycle/page-edits-series/03-selected-group-move/cold/notebook/Open Notebook.onetoc2 differ
corpus/page-lifecycle/page-edits-series/03-selected-group-move/cold/read/environment.json created+7
......@@ -0,0 +1,7 @@
1{
2 "powershell": "5.1.14409.1005",
3 "schema": "xs2010",
4 "hostname": "ONE-M6-161C24F1",
5 "cold": true,
6 "onenote": "14.0.4763.1000"
7}
corpus/page-lifecycle/page-edits-series/03-selected-group-move/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="{9EC88454-02A6-4568-B122-886EDEA7730A}{1}{B0}" path="C:\one-tests\runs\capture\notebook" lastModifiedTime="2026-09-27T15:40:32.000Z" color="#B49EDE"><one:Section name="Lifecycle" ID="{636C82C9-30B6-0BC6-3171-CAC8B9DE5FFF}{1}{B0}" path="C:\one-tests\runs\capture\notebook\Lifecycle.one" lastModifiedTime="2026-09-27T15:40:32.000Z" color="#91BAAE"><one:Page ID="{8356DB3C-7F36-03C1-246C-5A1060947D6F}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:40:32.000Z" pageLevel="1"/><one:Page ID="{C93BA2CF-EF9D-0A53-302F-5A318D04B641}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:40:32.000Z" pageLevel="1"/><one:Page ID="{E93463FC-E645-0D71-20B2-9CC576B69E24}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:40:32.000Z" pageLevel="1"/><one:Page ID="{2E6B31F8-2F80-4F73-83DD-983B770D8497}{1}{B0}" name="Renamed 🦋 é" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:40:32.000Z" pageLevel="1"/><one:Page ID="{458ECB58-197C-4542-BC7D-9A60E034108D}{1}{B0}" name="Body trailing 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:40:32.000Z" pageLevel="1"/><one:Page ID="{3EC7AFBB-4C75-4220-97C7-F261E4FD3DBC}{1}{B0}" name="Body automatic 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:40:32.000Z" pageLevel="1"/><one:Page ID="{FDF82A85-E080-4827-9DB1-D479CEE2A1FC}{1}{B0}" name="Same title" dateTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-27T15:40:32.000Z" pageLevel="1"/><one:Page ID="{A0740116-66C6-4221-A35C-ECAD8AC8350D}{1}{B0}" name="child" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:40:32.000Z" pageLevel="2"/><one:Page ID="{FDA8C3D5-FC0C-4C7E-BF7A-3401A07A69DB}{1}{B0}" name="grandchild" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:40:32.000Z" pageLevel="3"/></one:Section></one:Notebook>
corpus/page-lifecycle/page-edits-series/03-selected-group-move/cold/read/page-000.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="{2E6B31F8-2F80-4F73-83DD-983B770D8497}{1}{B0}" name="Renamed 🦋 é" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:40:32.000Z" pageLevel="1" lang="en-US"><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-09T03:09:34.000Z" lastModifiedTime="2026-09-09T03:09:34.000Z" objectID="{0393D04C-C93B-4803-95A3-7879A15B01E8}{16}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Renamed &#129419; é]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{48E4FBE6-A106-4499-90E3-E719023BB0D6}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="170.2942504882812" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{48E4FBE6-A106-4499-90E3-E719023BB0D6}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body duplicate &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/page-edits-series/03-selected-group-move/cold/read/page-001.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="{3EC7AFBB-4C75-4220-97C7-F261E4FD3DBC}{1}{B0}" name="Body automatic 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:40:32.000Z" pageLevel="1" lang="en-US"><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:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{89B9D5F3-E4DF-4DC1-9505-295FC7A39EAF}{14}{B0}"><one:Position x="36.0" y="14.40000057220459" z="0"/><one:Size width="174.3547973632812" height="13.42771625518799"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{89B9D5F3-E4DF-4DC1-9505-295FC7A39EAF}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body automatic &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/page-edits-series/03-selected-group-move/cold/read/page-002.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="{458ECB58-197C-4542-BC7D-9A60E034108D}{1}{B0}" name="Body trailing 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:40:32.000Z" pageLevel="1" lang="en-US"><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-09T03:09:34.000Z" lastModifiedTime="2026-09-09T03:09:34.000Z" objectID="{0000DAD5-1431-40F0-A9AC-2660AC28003D}{16}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{D4BFEB25-36EC-4F72-8E28-F884C6B3FAC1}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="160.1752014160156" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{D4BFEB25-36EC-4F72-8E28-F884C6B3FAC1}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body trailing &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/page-edits-series/03-selected-group-move/cold/read/page-003.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{8356DB3C-7F36-03C1-246C-5A1060947D6F}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:40:32.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="17.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-09T03:09:19.000Z" lastModifiedTime="2026-09-09T03:09:19.000Z" objectID="{4D23AA27-4383-0BA6-0FEB-0120FAE7F190}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/page-edits-series/03-selected-group-move/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="{A0740116-66C6-4221-A35C-ECAD8AC8350D}{1}{B0}" name="child" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:40:32.000Z" pageLevel="2" lang="en-US"><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-09T03:09:29.000Z" lastModifiedTime="2026-09-09T03:09:29.000Z" objectID="{2A207465-84EB-4689-8B1B-F3FF3173ECA9}{28}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[child]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{2A207465-84EB-4689-8B1B-F3FF3173ECA9}{35}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="149.6102294921875" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-09T03:09:29.000Z" objectID="{2A207465-84EB-4689-8B1B-F3FF3173ECA9}{36}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body child &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/page-edits-series/03-selected-group-move/cold/read/page-005.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{C93BA2CF-EF9D-0A53-302F-5A318D04B641}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:40:32.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="17.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-09T03:09:19.000Z" lastModifiedTime="2026-09-09T03:09:19.000Z" objectID="{E6DF6714-40C8-064A-1B45-228FA16268C3}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/page-edits-series/03-selected-group-move/cold/read/page-006.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{E93463FC-E645-0D71-20B2-9CC576B69E24}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:40:32.000Z" pageLevel="1"><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings></one:Page>
corpus/page-lifecycle/page-edits-series/03-selected-group-move/cold/read/page-007.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="{FDA8C3D5-FC0C-4C7E-BF7A-3401A07A69DB}{1}{B0}" name="grandchild" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:40:32.000Z" pageLevel="3" lang="en-US"><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-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{6D7DE866-FD36-4FD1-837F-848989F20A9A}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[grandchild]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{6D7DE866-FD36-4FD1-837F-848989F20A9A}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="175.9715728759766" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{6D7DE866-FD36-4FD1-837F-848989F20A9A}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body grandchild &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/page-edits-series/03-selected-group-move/cold/read/page-008.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="{FDF82A85-E080-4827-9DB1-D479CEE2A1FC}{1}{B0}" name="Same title" dateTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-27T15:40:32.000Z" pageLevel="1" lang="en-US"><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-09T03:09:27.000Z" lastModifiedTime="2026-09-09T03:09:27.000Z" objectID="{FFE3B3FF-B426-42B2-AF8E-1E76E019BF41}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:29.000Z" objectID="{FFE3B3FF-B426-42B2-AF8E-1E76E019BF41}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="158.2952728271484" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-09T03:09:29.000Z" objectID="{FFE3B3FF-B426-42B2-AF8E-1E76E019BF41}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body parent &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/page-edits-series/03-selected-group-move/cold/read/payloads.json created+3
......@@ -0,0 +1,3 @@
1[
2
3]
\ No newline at end of file
corpus/page-lifecycle/page-edits-series/03-selected-group-move/cold/run.json created+18
......@@ -0,0 +1,18 @@
1{
2 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmpn80ah_uu",
3 "expected_pages": 9,
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-lifecycle/page-edits-series/03-selected-group-move/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-lifecycle/page-edits-series/03-selected-group-move/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-lifecycle/page-edits-series/03-selected-group-move/cold/source.json created+8
......@@ -0,0 +1,8 @@
1[
2 {
3 "path": "Lifecycle.one",
4 "bytes": 58424,
5 "sha256": "e7065e4e043857c74bb8fa2ce6291c87378e3dc2224fad2fefe25e0396f645c4",
6 "mtime_ns": 1790522182627846620
7 }
8]
corpus/page-lifecycle/page-edits-series/03-selected-group-move/cold/teardown.json created+1
......@@ -0,0 +1 @@
1{"absent": true}
corpus/page-lifecycle/page-edits-series/04-subpage-move/candidate/Lifecycle.one created
Binary files /dev/null and b/corpus/page-lifecycle/page-edits-series/04-subpage-move/candidate/Lifecycle.one differ
corpus/page-lifecycle/page-edits-series/04-subpage-move/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-24B26E2E -ExpectedPages 9", "exit": 0, "stdout": "Read 1 sections and 9 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-lifecycle/page-edits-series/04-subpage-move/cold/machine.json created+1
......@@ -0,0 +1 @@
1{"name": "m6-24b26e2e", "hostname": "ONE-M6-24B26E2E"}
corpus/page-lifecycle/page-edits-series/04-subpage-move/cold/notebook/Lifecycle.one created
Binary files /dev/null and b/corpus/page-lifecycle/page-edits-series/04-subpage-move/cold/notebook/Lifecycle.one differ
corpus/page-lifecycle/page-edits-series/04-subpage-move/cold/notebook/Open Notebook.onetoc2 created
Binary files /dev/null and b/corpus/page-lifecycle/page-edits-series/04-subpage-move/cold/notebook/Open Notebook.onetoc2 differ
corpus/page-lifecycle/page-edits-series/04-subpage-move/cold/read/environment.json created+7
......@@ -0,0 +1,7 @@
1{
2 "powershell": "5.1.14409.1005",
3 "schema": "xs2010",
4 "hostname": "ONE-M6-24B26E2E",
5 "cold": true,
6 "onenote": "14.0.4763.1000"
7}
corpus/page-lifecycle/page-edits-series/04-subpage-move/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="{DBDF670B-2A27-4599-9129-152613AAE8DC}{1}{B0}" path="C:\one-tests\runs\capture\notebook" lastModifiedTime="2026-09-27T15:40:30.000Z" color="#B49EDE"><one:Section name="Lifecycle" ID="{5170D56D-D50E-0FE4-1051-815A4F605481}{1}{B0}" path="C:\one-tests\runs\capture\notebook\Lifecycle.one" lastModifiedTime="2026-09-27T15:40:30.000Z" color="#91BAAE"><one:Page ID="{B14A8C98-9A8E-07E3-054C-1182962A7611}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:40:30.000Z" pageLevel="1"/><one:Page ID="{FB27F56B-0A25-0E71-110F-11A37BBABD3F}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:40:30.000Z" pageLevel="1"/><one:Page ID="{DB283458-03FD-0953-0192-D7578008955A}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:40:30.000Z" pageLevel="1"/><one:Page ID="{926856B2-837E-4603-827C-A73F7C763E73}{1}{B0}" name="child" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:40:30.000Z" pageLevel="1"/><one:Page ID="{1C77665C-CA38-4B51-A2FD-D3A981B38FE9}{1}{B0}" name="Renamed 🦋 é" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:40:30.000Z" pageLevel="1"/><one:Page ID="{77929CFC-FCC4-4160-9D5D-D1F2168A1BF3}{1}{B0}" name="Body trailing 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:40:30.000Z" pageLevel="1"/><one:Page ID="{0CDBF81F-A9CD-4602-B6E7-B9F3124336C2}{1}{B0}" name="Body automatic 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:40:30.000Z" pageLevel="1"/><one:Page ID="{CFE47D21-0538-4C05-BC91-9FEB385CAA82}{1}{B0}" name="Same title" dateTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-27T15:40:30.000Z" pageLevel="1"/><one:Page ID="{CFB49471-19B4-485C-9E5A-7F9356C462A5}{1}{B0}" name="grandchild" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:40:30.000Z" pageLevel="3"/></one:Section></one:Notebook>
corpus/page-lifecycle/page-edits-series/04-subpage-move/cold/read/page-000.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="{0CDBF81F-A9CD-4602-B6E7-B9F3124336C2}{1}{B0}" name="Body automatic 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:40:30.000Z" pageLevel="1" lang="en-US"><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:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{BBA58257-0167-49E3-B425-62CD311D95D1}{14}{B0}"><one:Position x="36.0" y="14.40000057220459" z="0"/><one:Size width="174.3547973632812" height="13.42771625518799"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{BBA58257-0167-49E3-B425-62CD311D95D1}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body automatic &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/page-edits-series/04-subpage-move/cold/read/page-001.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="{1C77665C-CA38-4B51-A2FD-D3A981B38FE9}{1}{B0}" name="Renamed 🦋 é" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:40:30.000Z" pageLevel="1" lang="en-US"><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-09T03:09:34.000Z" lastModifiedTime="2026-09-09T03:09:34.000Z" objectID="{318F87E8-2C83-4C21-B483-33EB57E50A96}{16}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Renamed &#129419; é]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{7AF8AC42-44BE-40BB-B1C3-AC8BF485BBA8}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="170.2942504882812" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{7AF8AC42-44BE-40BB-B1C3-AC8BF485BBA8}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body duplicate &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/page-edits-series/04-subpage-move/cold/read/page-002.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="{77929CFC-FCC4-4160-9D5D-D1F2168A1BF3}{1}{B0}" name="Body trailing 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:40:30.000Z" pageLevel="1" lang="en-US"><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-09T03:09:34.000Z" lastModifiedTime="2026-09-09T03:09:34.000Z" objectID="{321C8D71-F189-44D2-888C-6DF25A960B43}{16}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{E6A3BC81-D354-4B50-AF08-B316300DF1BF}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="160.1752014160156" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{E6A3BC81-D354-4B50-AF08-B316300DF1BF}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body trailing &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/page-edits-series/04-subpage-move/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="{926856B2-837E-4603-827C-A73F7C763E73}{1}{B0}" name="child" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:40:30.000Z" pageLevel="1" lang="en-US"><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-09T03:09:29.000Z" lastModifiedTime="2026-09-09T03:09:29.000Z" objectID="{183C23C1-6153-42AB-AA3B-B86DC7CDE7D7}{28}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[child]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{183C23C1-6153-42AB-AA3B-B86DC7CDE7D7}{35}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="149.6102294921875" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-09T03:09:29.000Z" objectID="{183C23C1-6153-42AB-AA3B-B86DC7CDE7D7}{36}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body child &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/page-edits-series/04-subpage-move/cold/read/page-004.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{B14A8C98-9A8E-07E3-054C-1182962A7611}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:40:30.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="17.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-09T03:09:19.000Z" lastModifiedTime="2026-09-09T03:09:19.000Z" objectID="{7F3FFD83-A63B-0F84-2ECB-4AB20C59FAEE}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/page-edits-series/04-subpage-move/cold/read/page-005.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="{CFB49471-19B4-485C-9E5A-7F9356C462A5}{1}{B0}" name="grandchild" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:40:30.000Z" pageLevel="3" lang="en-US"><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-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{5F61BFC2-188E-4BF3-A25F-CF1B7F4C01E4}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[grandchild]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{5F61BFC2-188E-4BF3-A25F-CF1B7F4C01E4}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="175.9715728759766" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{5F61BFC2-188E-4BF3-A25F-CF1B7F4C01E4}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body grandchild &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/page-edits-series/04-subpage-move/cold/read/page-006.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="{CFE47D21-0538-4C05-BC91-9FEB385CAA82}{1}{B0}" name="Same title" dateTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-27T15:40:30.000Z" pageLevel="1" lang="en-US"><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-09T03:09:27.000Z" lastModifiedTime="2026-09-09T03:09:27.000Z" objectID="{CDFFE45B-519E-4690-8EAE-55E416A7B43F}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:29.000Z" objectID="{CDFFE45B-519E-4690-8EAE-55E416A7B43F}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="158.2952728271484" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-09T03:09:29.000Z" objectID="{CDFFE45B-519E-4690-8EAE-55E416A7B43F}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body parent &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/page-edits-series/04-subpage-move/cold/read/page-007.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{DB283458-03FD-0953-0192-D7578008955A}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:40:30.000Z" pageLevel="1"><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings></one:Page>
corpus/page-lifecycle/page-edits-series/04-subpage-move/cold/read/page-008.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{FB27F56B-0A25-0E71-110F-11A37BBABD3F}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:40:30.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="17.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-09T03:09:19.000Z" lastModifiedTime="2026-09-09T03:09:19.000Z" objectID="{D4C330B0-A570-0268-3A65-691D57DC63BD}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/page-edits-series/04-subpage-move/cold/read/payloads.json created+3
......@@ -0,0 +1,3 @@
1[
2
3]
\ No newline at end of file
corpus/page-lifecycle/page-edits-series/04-subpage-move/cold/run.json created+18
......@@ -0,0 +1,18 @@
1{
2 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmp6we9ek5d",
3 "expected_pages": 9,
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-lifecycle/page-edits-series/04-subpage-move/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-lifecycle/page-edits-series/04-subpage-move/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-lifecycle/page-edits-series/04-subpage-move/cold/source.json created+8
......@@ -0,0 +1,8 @@
1[
2 {
3 "path": "Lifecycle.one",
4 "bytes": 60208,
5 "sha256": "1b91cd7a7b6d225d52155246d1913a5c94b96b3f834a9f75529af349cc598983",
6 "mtime_ns": 1790522182669188978
7 }
8]
corpus/page-lifecycle/page-edits-series/04-subpage-move/cold/teardown.json created+1
......@@ -0,0 +1 @@
1{"absent": true}
corpus/page-lifecycle/page-edits-series/05-insert-before-subpage/candidate/Lifecycle.one created
Binary files /dev/null and b/corpus/page-lifecycle/page-edits-series/05-insert-before-subpage/candidate/Lifecycle.one differ
corpus/page-lifecycle/page-edits-series/05-insert-before-subpage/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-88FBA3A0 -ExpectedPages 9", "exit": 0, "stdout": "Read 1 sections and 9 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-lifecycle/page-edits-series/05-insert-before-subpage/cold/machine.json created+1
......@@ -0,0 +1 @@
1{"name": "m6-88fba3a0", "hostname": "ONE-M6-88FBA3A0"}
corpus/page-lifecycle/page-edits-series/05-insert-before-subpage/cold/notebook/Lifecycle.one created
Binary files /dev/null and b/corpus/page-lifecycle/page-edits-series/05-insert-before-subpage/cold/notebook/Lifecycle.one differ
corpus/page-lifecycle/page-edits-series/05-insert-before-subpage/cold/notebook/Open Notebook.onetoc2 created
Binary files /dev/null and b/corpus/page-lifecycle/page-edits-series/05-insert-before-subpage/cold/notebook/Open Notebook.onetoc2 differ
corpus/page-lifecycle/page-edits-series/05-insert-before-subpage/cold/read/environment.json created+7
......@@ -0,0 +1,7 @@
1{
2 "powershell": "5.1.14409.1005",
3 "schema": "xs2010",
4 "hostname": "ONE-M6-88FBA3A0",
5 "cold": true,
6 "onenote": "14.0.4763.1000"
7}
corpus/page-lifecycle/page-edits-series/05-insert-before-subpage/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="{ED32D0E3-E723-4714-9971-6DB63D7C389C}{1}{B0}" path="C:\one-tests\runs\capture\notebook" lastModifiedTime="2026-09-27T15:40:30.000Z" color="#B49EDE"><one:Section name="Lifecycle" ID="{2CC49CE9-9D79-0951-1C7E-68E7E295C127}{1}{B0}" path="C:\one-tests\runs\capture\notebook\Lifecycle.one" lastModifiedTime="2026-09-27T15:40:30.000Z" color="#91BAAE"><one:Page ID="{CCFEC51C-D2F9-0156-0963-F83F3BDFE3B7}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:40:30.000Z" pageLevel="1"/><one:Page ID="{8693BCEF-4252-08C4-1D20-F81ED64F2899}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:40:30.000Z" pageLevel="1"/><one:Page ID="{A69C7DDC-4B8A-0FE6-0DBD-3EEA2DFD00FC}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:40:30.000Z" pageLevel="1"/><one:Page ID="{61C32FD8-824F-4DE4-AED2-3A142C461A4F}{1}{B0}" name="Renamed 🦋 é" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:40:30.000Z" pageLevel="1"/><one:Page ID="{0A26D578-B4B3-47D5-9172-384FBB7F8E55}{1}{B0}" name="Body trailing 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:40:30.000Z" pageLevel="1"/><one:Page ID="{716FB19B-E1BA-40B7-BAC8-504EBFB6A364}{1}{B0}" name="Body automatic 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:40:30.000Z" pageLevel="1"/><one:Page ID="{B25034A5-4D4F-4AB0-B0BE-765695A93F24}{1}{B0}" name="Same title" dateTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-27T15:40:30.000Z" pageLevel="1"/><one:Page ID="{EFDC1F36-CB09-40B6-8E53-4E82D183ABD5}{1}{B0}" name="child" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:40:30.000Z" pageLevel="3"/><one:Page ID="{B200DDF5-51C3-4EE9-9275-962EFB31F703}{1}{B0}" name="grandchild" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:40:30.000Z" pageLevel="3"/></one:Section></one:Notebook>
corpus/page-lifecycle/page-edits-series/05-insert-before-subpage/cold/read/page-000.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="{0A26D578-B4B3-47D5-9172-384FBB7F8E55}{1}{B0}" name="Body trailing 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:40:30.000Z" pageLevel="1" lang="en-US"><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-09T03:09:34.000Z" lastModifiedTime="2026-09-09T03:09:34.000Z" objectID="{4FA8C4F5-B9FE-4267-84A3-844FF7639EE5}{16}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{9B17F505-9B23-4DE5-A327-5AAB9DF86419}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="160.1752014160156" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{9B17F505-9B23-4DE5-A327-5AAB9DF86419}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body trailing &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/page-edits-series/05-insert-before-subpage/cold/read/page-001.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="{61C32FD8-824F-4DE4-AED2-3A142C461A4F}{1}{B0}" name="Renamed 🦋 é" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:40:30.000Z" pageLevel="1" lang="en-US"><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-09T03:09:34.000Z" lastModifiedTime="2026-09-09T03:09:34.000Z" objectID="{4C3BCE6C-64F4-4A94-B8AC-DA56FA109F30}{16}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Renamed &#129419; é]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{074CE5C6-0CC9-460E-BDEC-453659702E0E}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="170.2942504882812" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{074CE5C6-0CC9-460E-BDEC-453659702E0E}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body duplicate &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/page-edits-series/05-insert-before-subpage/cold/read/page-002.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="{716FB19B-E1BA-40B7-BAC8-504EBFB6A364}{1}{B0}" name="Body automatic 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:40:30.000Z" pageLevel="1" lang="en-US"><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:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{C611CBD3-4910-4F56-B80A-8B709CE80077}{14}{B0}"><one:Position x="36.0" y="14.40000057220459" z="0"/><one:Size width="174.3547973632812" height="13.42771625518799"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{C611CBD3-4910-4F56-B80A-8B709CE80077}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body automatic &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/page-edits-series/05-insert-before-subpage/cold/read/page-003.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{8693BCEF-4252-08C4-1D20-F81ED64F2899}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:40:30.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="17.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-09T03:09:19.000Z" lastModifiedTime="2026-09-09T03:09:19.000Z" objectID="{A9777934-ED07-04DD-364A-80A0FA29F61B}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/page-edits-series/05-insert-before-subpage/cold/read/page-004.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{A69C7DDC-4B8A-0FE6-0DBD-3EEA2DFD00FC}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:40:30.000Z" pageLevel="1"><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings></one:Page>
corpus/page-lifecycle/page-edits-series/05-insert-before-subpage/cold/read/page-005.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="{B200DDF5-51C3-4EE9-9275-962EFB31F703}{1}{B0}" name="grandchild" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:40:30.000Z" pageLevel="3" lang="en-US"><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-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{22D5F646-50F9-4D46-AE70-26A6D2B99442}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[grandchild]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{22D5F646-50F9-4D46-AE70-26A6D2B99442}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="175.9715728759766" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{22D5F646-50F9-4D46-AE70-26A6D2B99442}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body grandchild &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/page-edits-series/05-insert-before-subpage/cold/read/page-006.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="{B25034A5-4D4F-4AB0-B0BE-765695A93F24}{1}{B0}" name="Same title" dateTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-27T15:40:30.000Z" pageLevel="1" lang="en-US"><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-09T03:09:27.000Z" lastModifiedTime="2026-09-09T03:09:27.000Z" objectID="{B04BADDF-19E9-4025-8281-BC59BB522199}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:29.000Z" objectID="{B04BADDF-19E9-4025-8281-BC59BB522199}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="158.2952728271484" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-09T03:09:29.000Z" objectID="{B04BADDF-19E9-4025-8281-BC59BB522199}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body parent &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/page-edits-series/05-insert-before-subpage/cold/read/page-007.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{CCFEC51C-D2F9-0156-0963-F83F3BDFE3B7}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:40:30.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="17.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-09T03:09:19.000Z" lastModifiedTime="2026-09-09T03:09:19.000Z" objectID="{028BB407-EE4C-0931-22E4-A30FA1AC6F48}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/page-edits-series/05-insert-before-subpage/cold/read/page-008.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="{EFDC1F36-CB09-40B6-8E53-4E82D183ABD5}{1}{B0}" name="child" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:40:30.000Z" pageLevel="3" lang="en-US"><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-09T03:09:29.000Z" lastModifiedTime="2026-09-09T03:09:29.000Z" objectID="{65886A45-2924-441E-A614-51D06A387271}{28}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[child]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{65886A45-2924-441E-A614-51D06A387271}{35}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="149.6102294921875" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-09T03:09:29.000Z" objectID="{65886A45-2924-441E-A614-51D06A387271}{36}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body child &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/page-edits-series/05-insert-before-subpage/cold/read/payloads.json created+3
......@@ -0,0 +1,3 @@
1[
2
3]
\ No newline at end of file
corpus/page-lifecycle/page-edits-series/05-insert-before-subpage/cold/run.json created+18
......@@ -0,0 +1,18 @@
1{
2 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmpbkgvgbin",
3 "expected_pages": 9,
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-lifecycle/page-edits-series/05-insert-before-subpage/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-lifecycle/page-edits-series/05-insert-before-subpage/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-lifecycle/page-edits-series/05-insert-before-subpage/cold/source.json created+8
......@@ -0,0 +1,8 @@
1[
2 {
3 "path": "Lifecycle.one",
4 "bytes": 61944,
5 "sha256": "28d85faa977ed919a90b237e93ee7aec55a4d988fafa1994dd5fbfa2e5d038a3",
6 "mtime_ns": 1790522182622519129
7 }
8]
corpus/page-lifecycle/page-edits-series/05-insert-before-subpage/cold/teardown.json created+1
......@@ -0,0 +1 @@
1{"absent": true}
corpus/page-lifecycle/page-edits-series/06-promoted-level-two/candidate/Lifecycle.one created
Binary files /dev/null and b/corpus/page-lifecycle/page-edits-series/06-promoted-level-two/candidate/Lifecycle.one differ
corpus/page-lifecycle/page-edits-series/06-promoted-level-two/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-4CCC9DAE -ExpectedPages 9", "exit": 0, "stdout": "Read 1 sections and 9 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-lifecycle/page-edits-series/06-promoted-level-two/cold/machine.json created+1
......@@ -0,0 +1 @@
1{"name": "m6-4ccc9dae", "hostname": "ONE-M6-4CCC9DAE"}
corpus/page-lifecycle/page-edits-series/06-promoted-level-two/cold/notebook/Lifecycle.one created
Binary files /dev/null and b/corpus/page-lifecycle/page-edits-series/06-promoted-level-two/cold/notebook/Lifecycle.one differ
corpus/page-lifecycle/page-edits-series/06-promoted-level-two/cold/notebook/Open Notebook.onetoc2 created
Binary files /dev/null and b/corpus/page-lifecycle/page-edits-series/06-promoted-level-two/cold/notebook/Open Notebook.onetoc2 differ
corpus/page-lifecycle/page-edits-series/06-promoted-level-two/cold/read/environment.json created+7
......@@ -0,0 +1,7 @@
1{
2 "powershell": "5.1.14409.1005",
3 "schema": "xs2010",
4 "hostname": "ONE-M6-4CCC9DAE",
5 "cold": true,
6 "onenote": "14.0.4763.1000"
7}
corpus/page-lifecycle/page-edits-series/06-promoted-level-two/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="{29386F8D-3C23-40F0-BFF5-007654C2A05D}{1}{B0}" path="C:\one-tests\runs\capture\notebook" lastModifiedTime="2026-09-27T15:40:31.000Z" color="#B49EDE"><one:Section name="Lifecycle" ID="{9C7A2F57-D847-065F-3CF3-6FC59027FED9}{1}{B0}" path="C:\one-tests\runs\capture\notebook\Lifecycle.one" lastModifiedTime="2026-09-27T15:40:31.000Z" color="#91BAAE"><one:Page ID="{7C4076A2-97C7-0E58-29EE-FF1D496DDC49}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:40:31.000Z" pageLevel="1"/><one:Page ID="{362D0F51-076C-07CA-3DAD-FF3CA4FD1767}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:40:31.000Z" pageLevel="1"/><one:Page ID="{1622CE62-0EB4-00E8-2D30-39C85F4F3F02}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:40:31.000Z" pageLevel="1"/><one:Page ID="{D17D9C66-C771-42EA-8E5F-3D365EF425B1}{1}{B0}" name="Renamed 🦋 é" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:40:31.000Z" pageLevel="1"/><one:Page ID="{BA9866C6-F18D-48DB-B1FF-3F6DC9CDB1AB}{1}{B0}" name="Body trailing 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:40:31.000Z" pageLevel="1"/><one:Page ID="{C1D10225-A484-4FB9-9A45-576CCD049C9A}{1}{B0}" name="Body automatic 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:40:31.000Z" pageLevel="1"/><one:Page ID="{02EE871B-0871-45BE-9033-7174E71B00DA}{1}{B0}" name="Same title" dateTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-27T15:40:31.000Z" pageLevel="1"/><one:Page ID="{5F62AC88-8E37-4FB8-AEDE-49A0A331942B}{1}{B0}" name="child" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:40:31.000Z" pageLevel="2"/><one:Page ID="{02BE6E4B-14FD-41E7-B2F8-910C8983C8FD}{1}{B0}" name="grandchild" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:40:31.000Z" pageLevel="3"/></one:Section></one:Notebook>
corpus/page-lifecycle/page-edits-series/06-promoted-level-two/cold/read/page-000.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="{02BE6E4B-14FD-41E7-B2F8-910C8983C8FD}{1}{B0}" name="grandchild" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:40:31.000Z" pageLevel="3" lang="en-US"><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-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{926B45F8-15C7-4248-8EFD-2184A00BABBC}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[grandchild]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{926B45F8-15C7-4248-8EFD-2184A00BABBC}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="175.9715728759766" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{926B45F8-15C7-4248-8EFD-2184A00BABBC}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body grandchild &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/page-edits-series/06-promoted-level-two/cold/read/page-001.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="{02EE871B-0871-45BE-9033-7174E71B00DA}{1}{B0}" name="Same title" dateTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-27T15:40:31.000Z" pageLevel="1" lang="en-US"><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-09T03:09:27.000Z" lastModifiedTime="2026-09-09T03:09:27.000Z" objectID="{00F51E61-5CD7-4F2B-A20C-BB7BC9E01E67}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:29.000Z" objectID="{00F51E61-5CD7-4F2B-A20C-BB7BC9E01E67}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="158.2952728271484" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-09T03:09:29.000Z" objectID="{00F51E61-5CD7-4F2B-A20C-BB7BC9E01E67}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body parent &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/page-edits-series/06-promoted-level-two/cold/read/page-002.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{1622CE62-0EB4-00E8-2D30-39C85F4F3F02}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:40:31.000Z" pageLevel="1"><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings></one:Page>
corpus/page-lifecycle/page-edits-series/06-promoted-level-two/cold/read/page-003.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{362D0F51-076C-07CA-3DAD-FF3CA4FD1767}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:40:31.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="17.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-09T03:09:19.000Z" lastModifiedTime="2026-09-09T03:09:19.000Z" objectID="{19C9CA8A-A839-0BD3-16C7-8782889BC9E5}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/page-edits-series/06-promoted-level-two/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="{5F62AC88-8E37-4FB8-AEDE-49A0A331942B}{1}{B0}" name="child" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:40:31.000Z" pageLevel="2" lang="en-US"><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-09T03:09:29.000Z" lastModifiedTime="2026-09-09T03:09:29.000Z" objectID="{D536D9FB-6C1A-4B10-8699-56F2188A4D8F}{28}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[child]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{D536D9FB-6C1A-4B10-8699-56F2188A4D8F}{35}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="149.6102294921875" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-09T03:09:29.000Z" objectID="{D536D9FB-6C1A-4B10-8699-56F2188A4D8F}{36}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body child &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/page-edits-series/06-promoted-level-two/cold/read/page-005.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{7C4076A2-97C7-0E58-29EE-FF1D496DDC49}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:40:31.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="17.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-09T03:09:19.000Z" lastModifiedTime="2026-09-09T03:09:19.000Z" objectID="{B23507B9-AB72-063F-0269-A42DD31E50B6}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/page-edits-series/06-promoted-level-two/cold/read/page-006.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="{BA9866C6-F18D-48DB-B1FF-3F6DC9CDB1AB}{1}{B0}" name="Body trailing 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:40:31.000Z" pageLevel="1" lang="en-US"><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-09T03:09:34.000Z" lastModifiedTime="2026-09-09T03:09:34.000Z" objectID="{FF16774B-FCC0-4D69-A42E-836D85D1A11B}{16}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{2BA946BB-DE1D-42EB-83AA-5D89EF4A5BE7}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="160.1752014160156" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{2BA946BB-DE1D-42EB-83AA-5D89EF4A5BE7}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body trailing &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/page-edits-series/06-promoted-level-two/cold/read/page-007.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="{C1D10225-A484-4FB9-9A45-576CCD049C9A}{1}{B0}" name="Body automatic 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:40:31.000Z" pageLevel="1" lang="en-US"><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:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{76AF786D-0C2E-4058-9887-8C52EE5A3F89}{14}{B0}"><one:Position x="36.0" y="14.40000057220459" z="0"/><one:Size width="174.3547973632812" height="13.42771625518799"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{76AF786D-0C2E-4058-9887-8C52EE5A3F89}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body automatic &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/page-edits-series/06-promoted-level-two/cold/read/page-008.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="{D17D9C66-C771-42EA-8E5F-3D365EF425B1}{1}{B0}" name="Renamed 🦋 é" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:40:31.000Z" pageLevel="1" lang="en-US"><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-09T03:09:34.000Z" lastModifiedTime="2026-09-09T03:09:34.000Z" objectID="{FC857DD2-21CA-459A-9821-DD7488A2A0CE}{16}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Renamed &#129419; é]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{B7F25678-49F7-4900-9D61-42142BC211F0}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="170.2942504882812" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{B7F25678-49F7-4900-9D61-42142BC211F0}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body duplicate &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/page-edits-series/06-promoted-level-two/cold/read/payloads.json created+3
......@@ -0,0 +1,3 @@
1[
2
3]
\ No newline at end of file
corpus/page-lifecycle/page-edits-series/06-promoted-level-two/cold/run.json created+18
......@@ -0,0 +1,18 @@
1{
2 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmpsvr31me6",
3 "expected_pages": 9,
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-lifecycle/page-edits-series/06-promoted-level-two/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-lifecycle/page-edits-series/06-promoted-level-two/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-lifecycle/page-edits-series/06-promoted-level-two/cold/source.json created+8
......@@ -0,0 +1,8 @@
1[
2 {
3 "path": "Lifecycle.one",
4 "bytes": 62696,
5 "sha256": "90732ec43728d3485a4ff5da2bb2960201961361ef084e8d97b93965875baa0d",
6 "mtime_ns": 1790522182647666599
7 }
8]
corpus/page-lifecycle/page-edits-series/06-promoted-level-two/cold/teardown.json created+1
......@@ -0,0 +1 @@
1{"absent": true}
corpus/page-lifecycle/page-edits-series/07-promoted-root/candidate/Lifecycle.one created
Binary files /dev/null and b/corpus/page-lifecycle/page-edits-series/07-promoted-root/candidate/Lifecycle.one differ
corpus/page-lifecycle/page-edits-series/07-promoted-root/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-AF60A95D -ExpectedPages 9", "exit": 0, "stdout": "Read 1 sections and 9 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-lifecycle/page-edits-series/07-promoted-root/cold/machine.json created+1
......@@ -0,0 +1 @@
1{"name": "m6-af60a95d", "hostname": "ONE-M6-AF60A95D"}
corpus/page-lifecycle/page-edits-series/07-promoted-root/cold/notebook/Lifecycle.one created
Binary files /dev/null and b/corpus/page-lifecycle/page-edits-series/07-promoted-root/cold/notebook/Lifecycle.one differ
corpus/page-lifecycle/page-edits-series/07-promoted-root/cold/notebook/Open Notebook.onetoc2 created
Binary files /dev/null and b/corpus/page-lifecycle/page-edits-series/07-promoted-root/cold/notebook/Open Notebook.onetoc2 differ
corpus/page-lifecycle/page-edits-series/07-promoted-root/cold/read/environment.json created+7
......@@ -0,0 +1,7 @@
1{
2 "powershell": "5.1.14409.1005",
3 "schema": "xs2010",
4 "hostname": "ONE-M6-AF60A95D",
5 "cold": true,
6 "onenote": "14.0.4763.1000"
7}
corpus/page-lifecycle/page-edits-series/07-promoted-root/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="{7422DBFA-EEF6-46CE-9BF7-9792C7416EC4}{1}{B0}" path="C:\one-tests\runs\capture\notebook" lastModifiedTime="2026-09-27T15:45:20.000Z" color="#B49EDE"><one:Section name="Lifecycle" ID="{0377322B-E6E3-0F60-28A3-FB3A6A74EB32}{1}{B0}" path="C:\one-tests\runs\capture\notebook\Lifecycle.one" lastModifiedTime="2026-09-27T15:45:20.000Z" color="#91BAAE"><one:Page ID="{E34D6BDE-A963-0767-3DBE-6BE2B33EC9A2}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:45:19.000Z" pageLevel="1"/><one:Page ID="{A920122D-39C8-0EF5-29FD-6BC35EAE028C}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:45:19.000Z" pageLevel="1"/><one:Page ID="{892FD31E-3010-09D7-3960-AD37A51C2AE9}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:45:20.000Z" pageLevel="1"/><one:Page ID="{4E70811A-F9D5-4BD5-9A0F-A9C9A4A7305A}{1}{B0}" name="Renamed 🦋 é" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:45:20.000Z" pageLevel="1"/><one:Page ID="{25957BBA-CF29-41E4-A5AF-AB92339EA440}{1}{B0}" name="Body trailing 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:45:20.000Z" pageLevel="1"/><one:Page ID="{5EDC1F59-9A20-4686-8E15-C39337578971}{1}{B0}" name="Body automatic 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:45:20.000Z" pageLevel="1"/><one:Page ID="{9DE39A67-36D5-4C81-8463-E58B1D481531}{1}{B0}" name="Same title" dateTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-27T15:45:20.000Z" pageLevel="1"/><one:Page ID="{C06FB1F4-B093-4687-BA8E-DD5F596281C0}{1}{B0}" name="child" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:45:20.000Z" pageLevel="1"/><one:Page ID="{9DB37337-2A59-48D8-A6A8-05F373D0DD16}{1}{B0}" name="grandchild" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:45:20.000Z" pageLevel="3"/></one:Section></one:Notebook>
corpus/page-lifecycle/page-edits-series/07-promoted-root/cold/read/page-000.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="{25957BBA-CF29-41E4-A5AF-AB92339EA440}{1}{B0}" name="Body trailing 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:45:20.000Z" pageLevel="1" lang="en-US"><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-09T03:09:34.000Z" lastModifiedTime="2026-09-09T03:09:34.000Z" objectID="{601B6A37-C264-4456-B07E-17927F82B4F0}{16}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{B4A45BC7-E0B9-4BD4-97FA-C97615194E0C}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="160.1752014160156" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{B4A45BC7-E0B9-4BD4-97FA-C97615194E0C}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body trailing &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/page-edits-series/07-promoted-root/cold/read/page-001.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="{4E70811A-F9D5-4BD5-9A0F-A9C9A4A7305A}{1}{B0}" name="Renamed 🦋 é" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:45:20.000Z" pageLevel="1" lang="en-US"><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-09T03:09:34.000Z" lastModifiedTime="2026-09-09T03:09:34.000Z" objectID="{638860AE-1F6E-4CA5-8C71-498B72F1B525}{16}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Renamed &#129419; é]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{28FF4B04-7753-403F-8931-D6EBD191041B}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="170.2942504882812" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{28FF4B04-7753-403F-8931-D6EBD191041B}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body duplicate &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/page-edits-series/07-promoted-root/cold/read/page-002.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="{5EDC1F59-9A20-4686-8E15-C39337578971}{1}{B0}" name="Body automatic 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:45:20.000Z" pageLevel="1" lang="en-US"><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:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{E9A26511-328A-4967-8CD7-18AD14092A62}{14}{B0}"><one:Position x="36.0" y="14.40000057220459" z="0"/><one:Size width="174.3547973632812" height="13.42771625518799"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{E9A26511-328A-4967-8CD7-18AD14092A62}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body automatic &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/page-edits-series/07-promoted-root/cold/read/page-003.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{892FD31E-3010-09D7-3960-AD37A51C2AE9}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:45:20.000Z" pageLevel="1"><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings></one:Page>
corpus/page-lifecycle/page-edits-series/07-promoted-root/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="{9DB37337-2A59-48D8-A6A8-05F373D0DD16}{1}{B0}" name="grandchild" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:45:20.000Z" pageLevel="3" lang="en-US"><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-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{0D665884-2B63-4B77-9AAD-B57B5A58BE57}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[grandchild]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{0D665884-2B63-4B77-9AAD-B57B5A58BE57}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="175.9715728759766" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{0D665884-2B63-4B77-9AAD-B57B5A58BE57}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body grandchild &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/page-edits-series/07-promoted-root/cold/read/page-005.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="{9DE39A67-36D5-4C81-8463-E58B1D481531}{1}{B0}" name="Same title" dateTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-27T15:45:20.000Z" pageLevel="1" lang="en-US"><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-09T03:09:27.000Z" lastModifiedTime="2026-09-09T03:09:27.000Z" objectID="{9FF8031D-6273-4614-B65C-2F8433B30B8C}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:29.000Z" objectID="{9FF8031D-6273-4614-B65C-2F8433B30B8C}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="158.2952728271484" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-09T03:09:29.000Z" objectID="{9FF8031D-6273-4614-B65C-2F8433B30B8C}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body parent &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/page-edits-series/07-promoted-root/cold/read/page-006.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{A920122D-39C8-0EF5-29FD-6BC35EAE028C}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:45:19.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="17.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-09T03:09:19.000Z" lastModifiedTime="2026-09-09T03:09:19.000Z" objectID="{86C4D7F6-969D-02EC-0297-137D72C8DC0E}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/page-edits-series/07-promoted-root/cold/read/page-007.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="{C06FB1F4-B093-4687-BA8E-DD5F596281C0}{1}{B0}" name="child" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:45:20.000Z" pageLevel="1" lang="en-US"><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-09T03:09:29.000Z" lastModifiedTime="2026-09-09T03:09:29.000Z" objectID="{4A3BC487-52BE-422F-92C9-C20DE2D95864}{28}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[child]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{4A3BC487-52BE-422F-92C9-C20DE2D95864}{35}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="149.6102294921875" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-09T03:09:29.000Z" objectID="{4A3BC487-52BE-422F-92C9-C20DE2D95864}{36}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body child &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/page-edits-series/07-promoted-root/cold/read/page-008.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{E34D6BDE-A963-0767-3DBE-6BE2B33EC9A2}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:45:19.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="17.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-09T03:09:19.000Z" lastModifiedTime="2026-09-09T03:09:19.000Z" objectID="{2D381AC5-95D6-0F00-1639-30D2294D455D}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/page-edits-series/07-promoted-root/cold/read/payloads.json created+3
......@@ -0,0 +1,3 @@
1[
2
3]
\ No newline at end of file
corpus/page-lifecycle/page-edits-series/07-promoted-root/cold/run.json created+18
......@@ -0,0 +1,18 @@
1{
2 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmpm0pgu6fk",
3 "expected_pages": 9,
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-lifecycle/page-edits-series/07-promoted-root/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-lifecycle/page-edits-series/07-promoted-root/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-lifecycle/page-edits-series/07-promoted-root/cold/source.json created+8
......@@ -0,0 +1,8 @@
1[
2 {
3 "path": "Lifecycle.one",
4 "bytes": 64480,
5 "sha256": "eb79d7824c9c1135ef3b8aaaa111cdb1277ccf8175729a2d0637a4031742d74f",
6 "mtime_ns": 1790522182638013566
7 }
8]
corpus/page-lifecycle/page-edits-series/07-promoted-root/cold/teardown.json created+1
......@@ -0,0 +1 @@
1{"absent": true}
corpus/page-lifecycle/page-edits-series/08-collapsed-group-move/candidate/Lifecycle.one created
Binary files /dev/null and b/corpus/page-lifecycle/page-edits-series/08-collapsed-group-move/candidate/Lifecycle.one differ
corpus/page-lifecycle/page-edits-series/08-collapsed-group-move/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-5DB5D160 -ExpectedPages 9", "exit": 0, "stdout": "Read 1 sections and 9 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-lifecycle/page-edits-series/08-collapsed-group-move/cold/machine.json created+1
......@@ -0,0 +1 @@
1{"name": "m6-5db5d160", "hostname": "ONE-M6-5DB5D160"}
corpus/page-lifecycle/page-edits-series/08-collapsed-group-move/cold/notebook/Lifecycle.one created
Binary files /dev/null and b/corpus/page-lifecycle/page-edits-series/08-collapsed-group-move/cold/notebook/Lifecycle.one differ
corpus/page-lifecycle/page-edits-series/08-collapsed-group-move/cold/notebook/Open Notebook.onetoc2 created
Binary files /dev/null and b/corpus/page-lifecycle/page-edits-series/08-collapsed-group-move/cold/notebook/Open Notebook.onetoc2 differ
corpus/page-lifecycle/page-edits-series/08-collapsed-group-move/cold/read/environment.json created+7
......@@ -0,0 +1,7 @@
1{
2 "powershell": "5.1.14409.1005",
3 "schema": "xs2010",
4 "hostname": "ONE-M6-5DB5D160",
5 "cold": true,
6 "onenote": "14.0.4763.1000"
7}
corpus/page-lifecycle/page-edits-series/08-collapsed-group-move/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="{394583B4-E976-4CB5-8FBB-5F29E722AA8F}{1}{B0}" path="C:\one-tests\runs\capture\notebook" lastModifiedTime="2026-09-27T15:45:19.000Z" color="#B49EDE"><one:Section name="Lifecycle" ID="{770C8580-3ADD-0D4F-1063-3180ADDC7EA0}{1}{B0}" path="C:\one-tests\runs\capture\notebook\Lifecycle.one" lastModifiedTime="2026-09-27T15:45:19.000Z" color="#91BAAE"><one:Page ID="{B414065F-6CAD-44A8-824E-17E59ECA1452}{1}{B0}" name="child" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:45:19.000Z" pageLevel="1"/><one:Page ID="{E9C8C49C-F667-4AF7-9E68-CF49B4784884}{1}{B0}" name="grandchild" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:45:19.000Z" pageLevel="3"/><one:Page ID="{9736DC75-755D-0548-057E-A15874965C30}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:45:19.000Z" pageLevel="1"/><one:Page ID="{DD5BA586-E5F6-0CDA-113D-A1799906971E}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:45:19.000Z" pageLevel="1"/><one:Page ID="{FD5464B5-EC2E-0BF8-01A0-678D62B4BF7B}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:45:19.000Z" pageLevel="1"/><one:Page ID="{3A0B36B1-25EB-49FA-A2CF-6373630FA5C8}{1}{B0}" name="Renamed 🦋 é" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:45:19.000Z" pageLevel="1"/><one:Page ID="{51EECC11-1317-43CB-9D6F-6128F43631D2}{1}{B0}" name="Body trailing 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:45:19.000Z" pageLevel="1"/><one:Page ID="{2AA7A8F2-461E-44A9-B6D5-0929F0FF1CE3}{1}{B0}" name="Body automatic 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:45:19.000Z" pageLevel="1"/><one:Page ID="{E9982DCC-EAEB-4EAE-BCA3-2F31DAE080A3}{1}{B0}" name="Same title" dateTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-27T15:45:19.000Z" pageLevel="1"/></one:Section></one:Notebook>
corpus/page-lifecycle/page-edits-series/08-collapsed-group-move/cold/read/page-000.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="{2AA7A8F2-461E-44A9-B6D5-0929F0FF1CE3}{1}{B0}" name="Body automatic 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:45:19.000Z" pageLevel="1" lang="en-US"><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:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{9DD9D2BA-EEB4-4B48-B417-D217D3A1BFF0}{14}{B0}"><one:Position x="36.0" y="14.40000057220459" z="0"/><one:Size width="174.3547973632812" height="13.42771625518799"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{9DD9D2BA-EEB4-4B48-B417-D217D3A1BFF0}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body automatic &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/page-edits-series/08-collapsed-group-move/cold/read/page-001.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="{3A0B36B1-25EB-49FA-A2CF-6373630FA5C8}{1}{B0}" name="Renamed 🦋 é" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:45:19.000Z" pageLevel="1" lang="en-US"><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-09T03:09:34.000Z" lastModifiedTime="2026-09-09T03:09:34.000Z" objectID="{17F3D705-C350-4E8A-B4B1-8331B55920B7}{16}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Renamed &#129419; é]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{5C84FCAF-AB6D-4210-B1F1-1C5116399189}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="170.2942504882812" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{5C84FCAF-AB6D-4210-B1F1-1C5116399189}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body duplicate &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/page-edits-series/08-collapsed-group-move/cold/read/page-002.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="{51EECC11-1317-43CB-9D6F-6128F43631D2}{1}{B0}" name="Body trailing 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:45:19.000Z" pageLevel="1" lang="en-US"><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-09T03:09:34.000Z" lastModifiedTime="2026-09-09T03:09:34.000Z" objectID="{1460DD9C-1E5A-4679-88BE-DD28B82A2162}{16}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{C0DFEC6C-3C87-49FB-AF3A-03CCD2B1DB9E}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="160.1752014160156" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{C0DFEC6C-3C87-49FB-AF3A-03CCD2B1DB9E}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body trailing &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/page-edits-series/08-collapsed-group-move/cold/read/page-003.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{9736DC75-755D-0548-057E-A15874965C30}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:45:19.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="17.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-09T03:09:19.000Z" lastModifiedTime="2026-09-09T03:09:19.000Z" objectID="{5943AD6E-49E8-0D2F-2EF9-FA68EEE5D0CF}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/page-edits-series/08-collapsed-group-move/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="{B414065F-6CAD-44A8-824E-17E59ECA1452}{1}{B0}" name="child" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:45:19.000Z" pageLevel="1" lang="en-US"><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-09T03:09:29.000Z" lastModifiedTime="2026-09-09T03:09:29.000Z" objectID="{3E40732C-8E80-4000-AA09-08B72571CDF6}{28}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[child]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{3E40732C-8E80-4000-AA09-08B72571CDF6}{35}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="149.6102294921875" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-09T03:09:29.000Z" objectID="{3E40732C-8E80-4000-AA09-08B72571CDF6}{36}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body child &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/page-edits-series/08-collapsed-group-move/cold/read/page-005.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{DD5BA586-E5F6-0CDA-113D-A1799906971E}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:45:19.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="17.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-09T03:09:19.000Z" lastModifiedTime="2026-09-09T03:09:19.000Z" objectID="{F2BF605D-4AA3-00C3-3A57-D9C7B560499C}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/page-edits-series/08-collapsed-group-move/cold/read/page-006.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="{E9982DCC-EAEB-4EAE-BCA3-2F31DAE080A3}{1}{B0}" name="Same title" dateTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-27T15:45:19.000Z" pageLevel="1" lang="en-US"><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-09T03:09:27.000Z" lastModifiedTime="2026-09-09T03:09:27.000Z" objectID="{EB83B4B6-BE4D-443B-8E9C-E53EF41B9E1E}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:29.000Z" objectID="{EB83B4B6-BE4D-443B-8E9C-E53EF41B9E1E}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="158.2952728271484" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-09T03:09:29.000Z" objectID="{EB83B4B6-BE4D-443B-8E9C-E53EF41B9E1E}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body parent &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/page-edits-series/08-collapsed-group-move/cold/read/page-007.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="{E9C8C49C-F667-4AF7-9E68-CF49B4784884}{1}{B0}" name="grandchild" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:45:19.000Z" pageLevel="3" lang="en-US"><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-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{791DEF2F-F75D-4958-A26D-7FC19DF02BC5}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[grandchild]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{791DEF2F-F75D-4958-A26D-7FC19DF02BC5}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="175.9715728759766" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{791DEF2F-F75D-4958-A26D-7FC19DF02BC5}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body grandchild &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/page-edits-series/08-collapsed-group-move/cold/read/page-008.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{FD5464B5-EC2E-0BF8-01A0-678D62B4BF7B}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:45:19.000Z" pageLevel="1"><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings></one:Page>
corpus/page-lifecycle/page-edits-series/08-collapsed-group-move/cold/read/payloads.json created+3
......@@ -0,0 +1,3 @@
1[
2
3]
\ No newline at end of file
corpus/page-lifecycle/page-edits-series/08-collapsed-group-move/cold/run.json created+18
......@@ -0,0 +1,18 @@
1{
2 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmp3lrvn0ah",
3 "expected_pages": 9,
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-lifecycle/page-edits-series/08-collapsed-group-move/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-lifecycle/page-edits-series/08-collapsed-group-move/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-lifecycle/page-edits-series/08-collapsed-group-move/cold/source.json created+8
......@@ -0,0 +1,8 @@
1[
2 {
3 "path": "Lifecycle.one",
4 "bytes": 65584,
5 "sha256": "7ba31fe2131d88523503fe1ca412b74fe301d6668a8fcdc691209bf9243db10c",
6 "mtime_ns": 1790522182626875088
7 }
8]
corpus/page-lifecycle/page-edits-series/08-collapsed-group-move/cold/teardown.json created+1
......@@ -0,0 +1 @@
1{"absent": true}
corpus/page-lifecycle/page-edits-series/README.md created+11
......@@ -0,0 +1,11 @@
1# Rust page moves in series of their own
2
3`../page-edits` regenerated since a moved page heads a new page series, as OneNote's
4drag gives the dragged pages one (`../movement`); its following subpages join the series
5before it. `01` and `02` only indent and are unchanged. Each candidate reopened in a fresh
6OneNote 2010 clone with every byte after the header and every active graph unchanged;
7`provenance.json` records the captures (`evidence/series`) and removed clones.
8
9Export with `ONESTORE_PAGE_MOVEMENT_OUTPUT` on `explicit_page_edits_match_native_selection_and_indentation`
10in `crates/onestore/tests/page_movement.rs`, then capture each with `tools/native_runner.py
11INPUT OUTPUT --expected-pages 9 --collect-notebook`.
corpus/page-lifecycle/page-edits-series/provenance.json created+253
......@@ -0,0 +1,253 @@
1{
2 "generator": [
3 "crates/onestore/tests/page_movement.rs::explicit_page_edits_match_native_selection_and_indentation"
4 ],
5 "evidence": "evidence/series",
6 "cold": {
7 "03-selected-group-move": {
8 "run": {
9 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmpn80ah_uu",
10 "expected_pages": 9,
11 "author": null,
12 "author_timeout_seconds": 600,
13 "inspect": false,
14 "collect_notebook": true,
15 "base": {
16 "file": "win7-office-base.qcow2",
17 "format": "qcow2",
18 "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346",
19 "virtual_size": 68719476736
20 },
21 "scripts": {
22 "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331",
23 "read.ps1": "04013bfcccee40a17e2a225f9b9e96f40a3a8daad9e350609654f8eda3ccbb41"
24 }
25 },
26 "machine": {
27 "name": "m6-161c24f1",
28 "hostname": "ONE-M6-161C24F1"
29 },
30 "teardown": {
31 "absent": true
32 },
33 "source": [
34 {
35 "path": "Lifecycle.one",
36 "bytes": 58424,
37 "sha256": "e7065e4e043857c74bb8fa2ce6291c87378e3dc2224fad2fefe25e0396f645c4",
38 "mtime_ns": 1790522182627846620
39 }
40 ]
41 },
42 "04-subpage-move": {
43 "run": {
44 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmp6we9ek5d",
45 "expected_pages": 9,
46 "author": null,
47 "author_timeout_seconds": 600,
48 "inspect": false,
49 "collect_notebook": true,
50 "base": {
51 "file": "win7-office-base.qcow2",
52 "format": "qcow2",
53 "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346",
54 "virtual_size": 68719476736
55 },
56 "scripts": {
57 "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331",
58 "read.ps1": "04013bfcccee40a17e2a225f9b9e96f40a3a8daad9e350609654f8eda3ccbb41"
59 }
60 },
61 "machine": {
62 "name": "m6-24b26e2e",
63 "hostname": "ONE-M6-24B26E2E"
64 },
65 "teardown": {
66 "absent": true
67 },
68 "source": [
69 {
70 "path": "Lifecycle.one",
71 "bytes": 60208,
72 "sha256": "1b91cd7a7b6d225d52155246d1913a5c94b96b3f834a9f75529af349cc598983",
73 "mtime_ns": 1790522182669188978
74 }
75 ]
76 },
77 "05-insert-before-subpage": {
78 "run": {
79 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmpbkgvgbin",
80 "expected_pages": 9,
81 "author": null,
82 "author_timeout_seconds": 600,
83 "inspect": false,
84 "collect_notebook": true,
85 "base": {
86 "file": "win7-office-base.qcow2",
87 "format": "qcow2",
88 "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346",
89 "virtual_size": 68719476736
90 },
91 "scripts": {
92 "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331",
93 "read.ps1": "04013bfcccee40a17e2a225f9b9e96f40a3a8daad9e350609654f8eda3ccbb41"
94 }
95 },
96 "machine": {
97 "name": "m6-88fba3a0",
98 "hostname": "ONE-M6-88FBA3A0"
99 },
100 "teardown": {
101 "absent": true
102 },
103 "source": [
104 {
105 "path": "Lifecycle.one",
106 "bytes": 61944,
107 "sha256": "28d85faa977ed919a90b237e93ee7aec55a4d988fafa1994dd5fbfa2e5d038a3",
108 "mtime_ns": 1790522182622519129
109 }
110 ]
111 },
112 "06-promoted-level-two": {
113 "run": {
114 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmpsvr31me6",
115 "expected_pages": 9,
116 "author": null,
117 "author_timeout_seconds": 600,
118 "inspect": false,
119 "collect_notebook": true,
120 "base": {
121 "file": "win7-office-base.qcow2",
122 "format": "qcow2",
123 "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346",
124 "virtual_size": 68719476736
125 },
126 "scripts": {
127 "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331",
128 "read.ps1": "04013bfcccee40a17e2a225f9b9e96f40a3a8daad9e350609654f8eda3ccbb41"
129 }
130 },
131 "machine": {
132 "name": "m6-4ccc9dae",
133 "hostname": "ONE-M6-4CCC9DAE"
134 },
135 "teardown": {
136 "absent": true
137 },
138 "source": [
139 {
140 "path": "Lifecycle.one",
141 "bytes": 62696,
142 "sha256": "90732ec43728d3485a4ff5da2bb2960201961361ef084e8d97b93965875baa0d",
143 "mtime_ns": 1790522182647666599
144 }
145 ]
146 },
147 "07-promoted-root": {
148 "run": {
149 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmpm0pgu6fk",
150 "expected_pages": 9,
151 "author": null,
152 "author_timeout_seconds": 600,
153 "inspect": false,
154 "collect_notebook": true,
155 "base": {
156 "file": "win7-office-base.qcow2",
157 "format": "qcow2",
158 "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346",
159 "virtual_size": 68719476736
160 },
161 "scripts": {
162 "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331",
163 "read.ps1": "04013bfcccee40a17e2a225f9b9e96f40a3a8daad9e350609654f8eda3ccbb41"
164 }
165 },
166 "machine": {
167 "name": "m6-af60a95d",
168 "hostname": "ONE-M6-AF60A95D"
169 },
170 "teardown": {
171 "absent": true
172 },
173 "source": [
174 {
175 "path": "Lifecycle.one",
176 "bytes": 64480,
177 "sha256": "eb79d7824c9c1135ef3b8aaaa111cdb1277ccf8175729a2d0637a4031742d74f",
178 "mtime_ns": 1790522182638013566
179 }
180 ]
181 },
182 "08-collapsed-group-move": {
183 "run": {
184 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmp3lrvn0ah",
185 "expected_pages": 9,
186 "author": null,
187 "author_timeout_seconds": 600,
188 "inspect": false,
189 "collect_notebook": true,
190 "base": {
191 "file": "win7-office-base.qcow2",
192 "format": "qcow2",
193 "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346",
194 "virtual_size": 68719476736
195 },
196 "scripts": {
197 "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331",
198 "read.ps1": "04013bfcccee40a17e2a225f9b9e96f40a3a8daad9e350609654f8eda3ccbb41"
199 }
200 },
201 "machine": {
202 "name": "m6-5db5d160",
203 "hostname": "ONE-M6-5DB5D160"
204 },
205 "teardown": {
206 "absent": true
207 },
208 "source": [
209 {
210 "path": "Lifecycle.one",
211 "bytes": 65584,
212 "sha256": "7ba31fe2131d88523503fe1ca412b74fe301d6668a8fcdc691209bf9243db10c",
213 "mtime_ns": 1790522182626875088
214 }
215 ]
216 },
217 "single-page": {
218 "run": {
219 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmpbiygu3ji",
220 "expected_pages": 9,
221 "author": null,
222 "author_timeout_seconds": 600,
223 "inspect": false,
224 "collect_notebook": true,
225 "base": {
226 "file": "win7-office-base.qcow2",
227 "format": "qcow2",
228 "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346",
229 "virtual_size": 68719476736
230 },
231 "scripts": {
232 "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331",
233 "read.ps1": "04013bfcccee40a17e2a225f9b9e96f40a3a8daad9e350609654f8eda3ccbb41"
234 }
235 },
236 "machine": {
237 "name": "m6-231ec95d",
238 "hostname": "ONE-M6-231EC95D"
239 },
240 "teardown": {
241 "absent": true
242 },
243 "source": [
244 {
245 "path": "Lifecycle.one",
246 "bytes": 55032,
247 "sha256": "eed7365c2054ffe32321b599ac4456d583130d3cb2e3aed41bf0baac4e27d8d2",
248 "mtime_ns": 1790522182633015571
249 }
250 ]
251 }
252 }
253}
corpus/page-lifecycle/page-edits-series/single-page/candidate/Lifecycle.one created
Binary files /dev/null and b/corpus/page-lifecycle/page-edits-series/single-page/candidate/Lifecycle.one differ
corpus/page-lifecycle/page-edits-series/single-page/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-231EC95D -ExpectedPages 9", "exit": 0, "stdout": "Read 1 sections and 9 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-lifecycle/page-edits-series/single-page/cold/machine.json created+1
......@@ -0,0 +1 @@
1{"name": "m6-231ec95d", "hostname": "ONE-M6-231EC95D"}
corpus/page-lifecycle/page-edits-series/single-page/cold/notebook/Lifecycle.one created
Binary files /dev/null and b/corpus/page-lifecycle/page-edits-series/single-page/cold/notebook/Lifecycle.one differ
corpus/page-lifecycle/page-edits-series/single-page/cold/notebook/Open Notebook.onetoc2 created
Binary files /dev/null and b/corpus/page-lifecycle/page-edits-series/single-page/cold/notebook/Open Notebook.onetoc2 differ
corpus/page-lifecycle/page-edits-series/single-page/cold/read/environment.json created+7
......@@ -0,0 +1,7 @@
1{
2 "powershell": "5.1.14409.1005",
3 "schema": "xs2010",
4 "hostname": "ONE-M6-231EC95D",
5 "cold": true,
6 "onenote": "14.0.4763.1000"
7}
corpus/page-lifecycle/page-edits-series/single-page/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="{8867CEE2-9C2C-4391-A958-61C7124F3281}{1}{B0}" path="C:\one-tests\runs\capture\notebook" lastModifiedTime="2026-09-27T15:45:24.000Z" color="#B49EDE"><one:Section name="Lifecycle" ID="{068F58F3-1D08-01A5-316A-B8ACDDCB764A}{1}{B0}" path="C:\one-tests\runs\capture\notebook\Lifecycle.one" lastModifiedTime="2026-09-27T15:45:24.000Z" color="#91BAAE"><one:Page ID="{E6B50106-5288-09A2-2477-2874048154DA}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:45:24.000Z" pageLevel="1"/><one:Page ID="{ACD878F5-C223-0030-3034-2855E9119FF4}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:45:24.000Z" pageLevel="1"/><one:Page ID="{8CD7B9C6-CBFB-0712-20A9-EEA112A3B791}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:45:24.000Z" pageLevel="1"/><one:Page ID="{C597DB2C-4B78-4842-A347-9EC9EEDD1CB8}{1}{B0}" name="child" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:45:24.000Z" pageLevel="2"/><one:Page ID="{984B19EF-D1B2-461D-BF61-4665C46F406E}{1}{B0}" name="grandchild" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:45:24.000Z" pageLevel="3"/><one:Page ID="{4B88EBC2-023E-4510-83C6-EA5F1318AD22}{1}{B0}" name="Renamed 🦋 é" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:45:24.000Z" pageLevel="1"/><one:Page ID="{206D1162-34C2-4F21-BC66-E80484213938}{1}{B0}" name="Body trailing 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:45:24.000Z" pageLevel="1"/><one:Page ID="{5B247581-61CB-4843-97DC-800580E81409}{1}{B0}" name="Body automatic 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:45:24.000Z" pageLevel="1"/><one:Page ID="{981BF0BF-CD3E-4244-9DAA-A61DAAF78849}{1}{B0}" name="Same title" dateTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-27T15:45:24.000Z" pageLevel="1"/></one:Section></one:Notebook>
corpus/page-lifecycle/page-edits-series/single-page/cold/read/page-000.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="{206D1162-34C2-4F21-BC66-E80484213938}{1}{B0}" name="Body trailing 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:45:24.000Z" pageLevel="1" lang="en-US"><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-09T03:09:34.000Z" lastModifiedTime="2026-09-09T03:09:34.000Z" objectID="{65E300EF-398F-4A93-A9B7-5404C83D2988}{16}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{B15C311F-1B52-4511-8E33-8AE0A2A6D374}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="160.1752014160156" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{B15C311F-1B52-4511-8E33-8AE0A2A6D374}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body trailing &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/page-edits-series/single-page/cold/read/page-001.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="{4B88EBC2-023E-4510-83C6-EA5F1318AD22}{1}{B0}" name="Renamed 🦋 é" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:45:24.000Z" pageLevel="1" lang="en-US"><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-09T03:09:34.000Z" lastModifiedTime="2026-09-09T03:09:34.000Z" objectID="{66700A76-E485-4260-95B8-0A1DC54E285D}{16}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Renamed &#129419; é]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{2D0721DC-8CB8-4EFA-90F8-957D662E9963}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="170.2942504882812" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{2D0721DC-8CB8-4EFA-90F8-957D662E9963}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body duplicate &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/page-edits-series/single-page/cold/read/page-002.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="{5B247581-61CB-4843-97DC-800580E81409}{1}{B0}" name="Body automatic 🦀 é preserved" dateTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-27T15:45:24.000Z" pageLevel="1" lang="en-US"><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:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{EC5A0FC9-C961-47A2-951E-5B3BA3B6B71A}{14}{B0}"><one:Position x="36.0" y="14.40000057220459" z="0"/><one:Size width="174.3547973632812" height="13.42771625518799"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{EC5A0FC9-C961-47A2-951E-5B3BA3B6B71A}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body automatic &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/page-edits-series/single-page/cold/read/page-003.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{8CD7B9C6-CBFB-0712-20A9-EEA112A3B791}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:45:24.000Z" pageLevel="1"><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings></one:Page>
corpus/page-lifecycle/page-edits-series/single-page/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="{981BF0BF-CD3E-4244-9DAA-A61DAAF78849}{1}{B0}" name="Same title" dateTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-27T15:45:24.000Z" pageLevel="1" lang="en-US"><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-09T03:09:27.000Z" lastModifiedTime="2026-09-09T03:09:27.000Z" objectID="{9A0069C5-9998-48D1-AF95-6C12840C96F4}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Same title]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:29.000Z" objectID="{9A0069C5-9998-48D1-AF95-6C12840C96F4}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="158.2952728271484" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:27.000Z" lastModifiedTime="2026-09-09T03:09:29.000Z" objectID="{9A0069C5-9998-48D1-AF95-6C12840C96F4}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body parent &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/page-edits-series/single-page/cold/read/page-005.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="{984B19EF-D1B2-461D-BF61-4665C46F406E}{1}{B0}" name="grandchild" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:45:24.000Z" pageLevel="3" lang="en-US"><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-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{089E325C-D088-45B2-8364-F6EDEDE7232F}{32}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[grandchild]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{089E325C-D088-45B2-8364-F6EDEDE7232F}{39}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="175.9715728759766" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:30.000Z" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{089E325C-D088-45B2-8364-F6EDEDE7232F}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body grandchild &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/page-edits-series/single-page/cold/read/page-006.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{ACD878F5-C223-0030-3034-2855E9119FF4}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:45:24.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="17.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-09T03:09:19.000Z" lastModifiedTime="2026-09-09T03:09:19.000Z" objectID="{833CBD2E-6D76-0C29-1B5E-50EBC5774176}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/page-edits-series/single-page/cold/read/page-007.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="{C597DB2C-4B78-4842-A347-9EC9EEDD1CB8}{1}{B0}" name="child" dateTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-27T15:45:24.000Z" pageLevel="2" lang="en-US"><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-09T03:09:29.000Z" lastModifiedTime="2026-09-09T03:09:29.000Z" objectID="{4FC3AE5F-A955-4CEA-8B00-819B5566C51C}{28}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[child]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-09T03:09:30.000Z" objectID="{4FC3AE5F-A955-4CEA-8B00-819B5566C51C}{35}{B0}"><one:Position x="36.0" y="86.4000015258789" z="0"/><one:Size width="149.6102294921875" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-09T03:09:29.000Z" lastModifiedTime="2026-09-09T03:09:29.000Z" objectID="{4FC3AE5F-A955-4CEA-8B00-819B5566C51C}{36}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Body child &#129408; é</span><span
4lang=en-US> </span><span style='font-style:italic' lang=x-none>preserved</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-lifecycle/page-edits-series/single-page/cold/read/page-008.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{E6B50106-5288-09A2-2477-2874048154DA}{1}{B0}" name="Untitled page" dateTime="2026-09-09T03:09:19.000Z" lastModifiedTime="2026-09-27T15:45:24.000Z" pageLevel="1"><one:QuickStyleDef index="0" name="PageTitle" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="17.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-09T03:09:19.000Z" lastModifiedTime="2026-09-09T03:09:19.000Z" objectID="{28C0701D-6E3D-01C5-0FF0-73449EF2D825}{15}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[]]></one:T></one:OE></one:Title></one:Page>
corpus/page-lifecycle/page-edits-series/single-page/cold/read/payloads.json created+3
......@@ -0,0 +1,3 @@
1[
2
3]
\ No newline at end of file
corpus/page-lifecycle/page-edits-series/single-page/cold/run.json created+18
......@@ -0,0 +1,18 @@
1{
2 "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmpbiygu3ji",
3 "expected_pages": 9,
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-lifecycle/page-edits-series/single-page/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-lifecycle/page-edits-series/single-page/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-lifecycle/page-edits-series/single-page/cold/source.json created+8
......@@ -0,0 +1,8 @@
1[
2 {
3 "path": "Lifecycle.one",
4 "bytes": 55032,
5 "sha256": "eed7365c2054ffe32321b599ac4456d583130d3cb2e3aed41bf0baac4e27d8d2",
6 "mtime_ns": 1790522182633015571
7 }
8]
corpus/page-lifecycle/page-edits-series/single-page/cold/teardown.json created+1
......@@ -0,0 +1 @@
1{"absent": true}
crates/notebook/README.md+11-6
......@@ -242,12 +242,17 @@ directly from the core document model.
242242
243243## Notebook structure
244244
245`Notebook::create_section`, `create_group`, `rename`, `set_section_color`,
246`reorder` and `delete` change a notebook the way OneNote does: the table of
247contents (`Open Notebook.onetoc2`, created when a folder has none) gains,
248renames, reorders or loses entries; a section's colour lives in its own
249metadata; a deleted section moves into `OneNote_RecycleBin`, a group with its
250own TOC. Every created, renamed or moved file is placed with
245`Notebook::create`, `create_section`, `create_group`, `rename`, `move_entry`,
246`set_section_color`, `reorder` and `delete` change a notebook the way OneNote does: the
247table of contents (`Open Notebook.onetoc2`, created when a folder has none) gains,
248renames, reorders or loses entries; a new notebook holds "New Section 1", and a new
249section an empty section's file plus the page its `PageCreation` makes, in OneNote's
250new-section colour order; a section's colour lives in its own metadata; a deleted
251section moves into `OneNote_RecycleBin`, a group with its own TOC, and a deleted group's
252sections move there too before its folders go. `recycle_pages` keeps copies of pages a
253section is about to delete in `OneNote_RecycleBin/OneNote_DeletedPages.one`, with their
254identities, titles, dates and creation times, as OneNote does
255(`corpus/notebook-management`). Every created, renamed or moved file is placed with
251256`onestore::place_file`, which sets the header's ancestor to the parent TOC's
252257identity and the name CRC OneNote checks on open; a file without them is
253258re-identified and listed anew. They run over `Storage`: a mounted directory
crates/notebook/src/merge.rs+45-54
......@@ -37,6 +37,8 @@ pub(crate) struct Merged {
3737 /// Pages whose local version the remote could not take, with who made the first edit
3838 /// that did not replay and the objects the dropped ops named.
3939 pub conflicts: BTreeMap<ExGuid, (String, BTreeSet<ExGuid>)>,
40 /// Pages the base listed that the remote moved (`moved`).
41 pub moved: BTreeSet<ExGuid>,
4042}
4143
4244/// Replays `edits` on `new`, the remote section; `old` is the base they were made on.
......@@ -54,7 +56,7 @@ pub(crate) fn rebase(
5456 before,
5557 after,
5658 local: orders.0.clone(),
57 unmoved: unmoved(old, new)?,
59 moved: moved(old, new)?,
5860 orders,
5961 created: BTreeSet::new(),
6062 diffs: BTreeMap::new(),
......@@ -62,6 +64,7 @@ pub(crate) fn rebase(
6264 let mut merged = Merged {
6365 rewritten: Vec::new(),
6466 conflicts: BTreeMap::new(),
67 moved: state.moved.clone(),
6568 };
6669 for queued in edits {
6770 let mut ops = Vec::new();
......@@ -117,14 +120,11 @@ pub(crate) fn rebase(
117120 }
118121 Op::Section(section_op) => {
119122 advance(&mut state.local, section_op);
120 // The first form of the edit the remote's page list takes, or none.
121 let mut kept = None;
122 for form in state.forms(new, section_op)? {
123 let form = Op::Section(form);
124 if apply(&mut state, new, &form)? {
125 kept = Some(form);
126 break;
127 }
123 let mut kept = state.form(new, section_op)?.map(Op::Section);
124 if let Some(form) = &kept
125 && !apply(&mut state, new, form)?
126 {
127 kept = None;
128128 }
129129 changed |= kept.as_ref() != Some(op);
130130 ops.extend(kept);
......@@ -179,15 +179,16 @@ fn named(op: &PageOp) -> Vec<ExGuid> {
179179}
180180
181181/// The edit keeping `page`, the version of page `space` the remote could not take, and
182/// applies it to `new`: a conflict page under the remote's page marking `objects` where
183/// `page` holds them, or, where the remote removed the page, the page put back as a copy
184/// where `local`, the section as the queue leaves it, has it. Content outside the page
185/// model stays on the remote's page only; `at` is now.
182/// applies it to `new`, the merged section: a conflict page under the remote's page
183/// marking `objects` where `page` holds them, or, where the remote removed the page, the
184/// page put back as a copy before the next page after it in `local`, the section as the
185/// queue leaves it, that the remote did not move (`moved`). Content outside the page model
186/// stays on the remote's page only; `at` is now.
186187#[allow(clippy::too_many_arguments)]
187188pub(crate) fn conflict_page(
188189 new: &mut Section<'_>,
189 old: &mut Section<'_>,
190190 local: &mut Section<'_>,
191 moved: &BTreeSet<ExGuid>,
191192 space: ExGuid,
192193 page: &Page,
193194 author: &str,
......@@ -217,7 +218,6 @@ pub(crate) fn conflict_page(
217218 })]
218219 } else {
219220 // A copy under fresh identities, as OneNote 2010 puts a removed page back.
220 let (base, unmoved) = (order(old)?, unmoved(old, new)?);
221221 let queued = order(local)?;
222222 let at = queued.iter().position(|(queued, _)| *queued == space);
223223 let before = at
......@@ -225,8 +225,7 @@ pub(crate) fn conflict_page(
225225 .iter()
226226 .map(|(next, _)| *next)
227227 .find(|next| {
228 listed.iter().any(|(listed, _)| listed == next)
229 && (unmoved.contains(next) || base.iter().all(|(page, _)| page != next))
228 !moved.contains(next) && listed.iter().any(|(listed, _)| listed == next)
230229 });
231230 let creation = PageCreation::new(before, Some(&page.title), author)?;
232231 let mut ops = vec![Op::Section(SectionOp::Import {
......@@ -246,19 +245,20 @@ pub(crate) fn conflict_page(
246245 Ok(edit)
247246}
248247
249/// Pages the base and the remote both list that the remote left in place: in the same
250/// series at the same level, in base order among themselves. OneNote 2010 gives a page it
251/// moves a series of its own; a page moved within its series is out of base order.
252fn unmoved(old: &mut Section<'_>, new: &mut Section<'_>) -> Result<BTreeSet<ExGuid>> {
248/// Pages the base and the remote both list that the remote moved: into another series or
249/// level, or out of base order among the rest. OneNote 2010 and this writer give a moved
250/// page a series of its own; older builds of this writer moved a page within its series.
251fn moved(old: &mut Section<'_>, new: &mut Section<'_>) -> Result<BTreeSet<ExGuid>> {
253252 let series = (old.series()?, new.series()?);
254253 let base: BTreeMap<ExGuid, (usize, u32)> = order(old)?
255254 .into_iter()
256255 .enumerate()
257256 .map(|(at, (space, level))| (space, (at, level)))
258257 .collect();
259 let kept: Vec<(ExGuid, usize)> = order(new)?
260 .into_iter()
261 .filter_map(|(space, level)| {
258 let listed = order(new)?;
259 let kept: Vec<(ExGuid, usize)> = listed
260 .iter()
261 .filter_map(|&(space, level)| {
262262 let (at, before) = base.get(&space)?;
263263 (*before == level && series.0.get(&space) == series.1.get(&space)).then_some((space, *at))
264264 })
......@@ -281,7 +281,11 @@ fn unmoved(old: &mut Section<'_>, new: &mut Section<'_>) -> Result<BTreeSet<ExGu
281281 unmoved.insert(kept[i].0);
282282 next = previous[i];
283283 }
284 Ok(unmoved)
284 Ok(listed
285 .into_iter()
286 .map(|(space, _)| space)
287 .filter(|space| base.contains_key(space) && !unmoved.contains(space))
288 .collect())
285289}
286290
287291/// Applies a queued page-list edit to `local`, the page order as the queue leaves it.
......@@ -332,8 +336,8 @@ struct Replay {
332336 orders: (Order, Order),
333337 /// Page order as the queue leaves it, up to the op replaying.
334338 local: Order,
335 /// Pages the remote left in place (`unmoved`).
336 unmoved: BTreeSet<ExGuid>,
339 /// Pages the base listed that the remote moved (`moved`).
340 moved: BTreeSet<ExGuid>,
337341 /// Page spaces the replayed edits created.
338342 created: BTreeSet<ExGuid>,
339343 /// Per page the remote changed, what it changed; `None` when it left the page alone.
......@@ -403,57 +407,52 @@ impl Replay {
403407 self.created.contains(&space) || self.orders.1.iter().any(|(page, _)| *page == space)
404408 }
405409
406 /// Whether the remote moved or re-leveled a page the base listed.
407 fn placed(&self, page: ExGuid) -> bool {
408 !self.unmoved.contains(&page) && self.orders.0.iter().any(|(listed, _)| *listed == page)
409 }
410
411410 /// Where a page the queue put before `before` goes on the remote: before the first page
412411 /// from `before` on, in the queue's order, that the remote lists where the base had it,
413412 /// or last, as OneNote 2010 places a page series only one side changed.
414413 fn anchor(&self, listed: &Order, page: ExGuid, before: Option<ExGuid>) -> Option<ExGuid> {
415414 let from = self.local.iter().position(|(space, _)| Some(*space) == before)?;
416415 self.local[from..].iter().map(|(space, _)| *space).find(|space| {
417 *space != page && !self.placed(*space) && listed.iter().any(|(listed, _)| listed == space)
416 *space != page && !self.moved.contains(space) && listed.iter().any(|(listed, _)| listed == space)
418417 })
419418 }
420419
421 /// Forms of a section op to try on the remote section, in order: a page placed by
420 /// A section op as it replays on the remote section, or `None`: a page placed by
422421 /// `anchor`, the page edits of pages the remote still has and did not move, removals of
423422 /// pages the remote still has (a page it changed is not removed), a conflict page's
424423 /// content as a page of its own where the remote removed its page.
425 fn forms(&self, new: &mut Section<'_>, op: &SectionOp) -> Result<Vec<SectionOp>> {
424 fn form(&self, new: &mut Section<'_>, op: &SectionOp) -> Result<Option<SectionOp>> {
426425 let conflicts: BTreeSet<ExGuid> = new
427426 .conflicts()?
428427 .into_iter()
429428 .flat_map(|(_, pages)| pages.into_iter().map(|page| page.space))
430429 .collect();
431430 let listed = order(new)?;
432 let placed = |creation: &PageCreation| {
431 let anchored = |creation: &PageCreation| {
433432 creation.reposition(self.anchor(&listed, creation.space(), creation.before()))
434433 };
435434 Ok(match op {
436 SectionOp::Create(creation) => vec![SectionOp::Create(placed(creation)?)],
437 SectionOp::Import { creation, page } => vec![SectionOp::Import {
438 creation: placed(creation)?,
435 SectionOp::Create(creation) => Some(SectionOp::Create(anchored(creation)?)),
436 SectionOp::Import { creation, page } => Some(SectionOp::Import {
437 creation: anchored(creation)?,
439438 page: page.clone(),
440 }],
441 SectionOp::Color(_) => vec![op.clone()],
439 }),
440 SectionOp::Color(_) => Some(op.clone()),
442441 SectionOp::Conflict {
443442 of, creation, page, ..
444 } => vec![if self.listed(*of) {
443 } => Some(if self.listed(*of) {
445444 op.clone()
446445 } else {
447446 SectionOp::Import {
448447 creation: creation.clone(),
449448 page: page.clone(),
450449 }
451 }],
450 }),
452451 // A page the remote moved or re-leveled keeps the remote's placement.
453452 SectionOp::Pages(edits) => {
454453 let mut kept = Vec::new();
455454 for edit in edits {
456 if self.placed(edit.space())
455 if self.moved.contains(&edit.space())
457456 || listed.iter().all(|(listed, _)| *listed != edit.space())
458457 {
459458 continue;
......@@ -466,11 +465,7 @@ impl Replay {
466465 )?,
467466 });
468467 }
469 if kept.is_empty() {
470 Vec::new()
471 } else {
472 vec![SectionOp::Pages(kept)]
473 }
468 (!kept.is_empty()).then_some(SectionOp::Pages(kept))
474469 }
475470 SectionOp::Delete(deleted) => {
476471 let deleted: Vec<ExGuid> = deleted
......@@ -481,11 +476,7 @@ impl Replay {
481476 })
482477 .copied()
483478 .collect();
484 if deleted.is_empty() {
485 Vec::new()
486 } else {
487 vec![SectionOp::Delete(deleted)]
488 }
479 (!deleted.is_empty()).then_some(SectionOp::Delete(deleted))
489480 }
490481 })
491482 }
crates/notebook/src/session.rs+69-37
......@@ -140,11 +140,12 @@ impl Storage for Directory {
140140
141141 fn delete(&self, path: &str) -> Result<()> {
142142 let path = self.path(path);
143 Ok(if path.is_dir() {
144 std::fs::remove_dir(path)?
143 if path.is_dir() {
144 std::fs::remove_dir(path)?;
145145 } else {
146 std::fs::remove_file(path)?
147 })
146 std::fs::remove_file(path)?;
147 }
148 Ok(())
148149 }
149150
150151 fn place(&self, path: &str, ancestor: [u8; 16], name: &str) -> Result<()> {
......@@ -259,6 +260,7 @@ impl Notebook {
259260 std::fs::create_dir(root.as_ref())?;
260261 let mut notebook = Self::open(root, cache)?;
261262 notebook.edit_toc("", &[onestore::TocEdit::Color(color)])?;
263 notebook.refresh()?;
262264 notebook.create_section("", "New Section 1", page)?;
263265 Ok(notebook)
264266 }
......@@ -368,8 +370,14 @@ impl Notebook {
368370 Some(toc) => Ok((catalog_path(folder, &toc.filename), toc.file_id)),
369371 None => {
370372 let path = catalog_path(folder, TOC);
371 let bytes = onestore::create_table_of_contents(TOC, &[])?;
372 self.storage.create(&path, &bytes)?;
373 // One this change already created, before the catalog was read again.
374 let bytes = if self.storage.exists(&path) {
375 self.storage.read(&path)?
376 } else {
377 let bytes = onestore::create_table_of_contents(TOC, &[])?;
378 self.storage.create(&path, &bytes)?;
379 bytes
380 };
373381 Ok((path, onestore::Store::parse(&bytes)?.header.file_id))
374382 }
375383 }
......@@ -632,17 +640,7 @@ impl Notebook {
632640 let mut section = onestore::Section::open(&arena, self.storage.read(&path)?)?;
633641 let mut ops = Vec::new();
634642 for page in pages {
635 let mut creation = PageCreation::new(None, Some(&page.title), author)?;
636 if let (Some(identity), Some(created)) = (page.identity, page.created) {
637 creation = creation.keeping(identity, created)?;
638 }
639 if let Some([date, time]) = page.date_text() {
640 creation = creation.dated(&date, &time)?;
641 }
642 ops.push(Op::Section(SectionOp::Import {
643 creation,
644 page: page.copy()?,
645 }));
643 ops.push(moved(page, author)?);
646644 }
647645 section.apply(author, &Edit { at: crate::now(), ops })?;
648646 if let Some(transaction) = section.seal()? {
......@@ -802,6 +800,17 @@ impl Notebook {
802800
803801 /// Opens a section of a mounted notebook by its catalog path.
804802 pub fn section(&self, path: &str, notify: impl Fn() + Send + 'static) -> Result<Section> {
803 self.section_with(path, |file| Ok(FileRemote(file.to_owned())), notify)
804 }
805
806 /// `section`, reading and publishing through the remote `connect` makes for its file
807 /// (`Section::open_with`).
808 pub fn section_with<R: Remote + 'static>(
809 &self,
810 path: &str,
811 connect: impl FnMut(&Path) -> io::Result<R> + Send + 'static,
812 notify: impl Fn() + Send + 'static,
813 ) -> Result<Section> {
805814 let path = self.section_path(path)?.path.clone();
806815 let Some(root) = &self.root else {
807816 return Err(io::Error::new(
......@@ -815,29 +824,39 @@ impl Notebook {
815824 if !file.starts_with(root) {
816825 return Err(io::Error::from(io::ErrorKind::PermissionDenied).into());
817826 }
818 Section::open(file, &self.cache, notify)
827 Section::open_with(file, &self.cache, connect, notify)
819828 }
820829}
821830
822/// The section colours OneNote 2010 gives new sections, COLORREF, in the order it gives
823/// them (`evidence/notebook-management/new-notebook`).
824const SECTION_COLORS: [u32; 3] = [0x00e4a88a, 0x0078b0f6, 0x00bba4d5];
831/// The colours OneNote 2010 gives a folder's first sixteen new sections, COLORREF, in the
832/// order it gives them (`corpus/notebook-management/native/section-colors`: sixteen sections
833/// made with New Section in a new notebook).
834const SECTION_COLORS: [u32; 16] = [
835 0x00e4a88a, 0x0078b0f6, 0x00bba4d5, 0x00d2bb9b, 0x00b79cab, 0x0099d1e8, 0x006ff9f5,
836 0x0092e7ad, 0x00cabc4d, 0x007575ba, 0x00aa9595, 0x00e4a88a, 0x0069d8ff, 0x0097c9b7,
837 0x009795ee, 0x00de9eb4,
838];
825839
826/// The colour OneNote gives a new section in `folder`: the first of its colours none of
827/// the folder's sections has, or the next in turn when all are taken.
840/// The colour OneNote gives a new section in `folder`, by how many sections it holds.
828841fn next_color(folder: &discover::Folder) -> u32 {
829 let taken: Vec<u32> = folder
830 .sections
831 .iter()
832 .filter_map(|section| match section.state {
833 discover::SectionState::Readable { color, .. } => color,
834 _ => None,
835 })
836 .collect();
837 SECTION_COLORS
838 .into_iter()
839 .find(|color| !taken.contains(color))
840 .unwrap_or(SECTION_COLORS[folder.sections.len() % SECTION_COLORS.len()])
842 SECTION_COLORS[folder.sections.len() % SECTION_COLORS.len()]
843}
844
845/// The op putting `page` into another section as OneNote moves a page there, into the
846/// recycle bin or another section: last, under fresh object identities, keeping its page
847/// identity, title, date and creation time.
848pub fn moved(page: &Page, author: &str) -> Result<Op> {
849 let mut creation = PageCreation::new(None, Some(&page.title), author)?;
850 if let (Some(identity), Some(created)) = (page.identity, page.created) {
851 creation = creation.keeping(identity, created)?;
852 }
853 if let Some([date, time]) = page.date_text() {
854 creation = creation.dated(&date, &time)?;
855 }
856 Ok(Op::Section(SectionOp::Import {
857 creation,
858 page: page.copy()?,
859 }))
841860}
842861
843862fn component(name: &str) -> bool {
......@@ -896,9 +915,21 @@ impl Section {
896915 file: impl AsRef<Path>,
897916 cache: impl AsRef<Path>,
898917 notify: impl Fn() + Send + 'static,
918 ) -> Result<Self> {
919 Self::open_with(file, cache, |file| Ok(FileRemote(file.to_owned())), notify)
920 }
921
922 /// `open`, reading and publishing the file through the remote `connect` makes for it,
923 /// as a host that coordinates file access with other processes (iOS's file providers)
924 /// needs.
925 pub fn open_with<R: Remote + 'static>(
926 file: impl AsRef<Path>,
927 cache: impl AsRef<Path>,
928 mut connect: impl FnMut(&Path) -> io::Result<R> + Send + 'static,
929 notify: impl Fn() + Send + 'static,
899930 ) -> Result<Self> {
900931 let file = file.as_ref().canonicalize()?;
901 let source = onestore::read_file(&file)?;
932 let source = connect(&file)?.read()?;
902933 let store = Store::parse(&source)?;
903934 let identity = RevisionIndex::parse(&store)?.root;
904935 let name: String = identity
......@@ -913,7 +944,8 @@ impl Section {
913944 } else {
914945 Replica::create(&cache, &source)?
915946 };
916 Self::resume(file, replica, notify)
947 let remote = file.clone();
948 Self::start(file, replica, move || connect(&remote), notify)
917949 }
918950
919951 /// Resumes an owned local replica without reading the publication target.
crates/notebook/src/working.rs+1-1
......@@ -642,8 +642,8 @@ fn rebase(connection: &Mutex<Connection>, image: Option<Vec<u8>>) -> Result<Vec<
642642 };
643643 let edit = merge::conflict_page(
644644 &mut new,
645 &mut old,
646645 local,
646 &merged.moved,
647647 *space,
648648 page,
649649 author,
crates/onestore/README.md+6-1
......@@ -85,7 +85,12 @@ under the section's key (fresh IV per object, payloads under the file IV); `Sect
8585rejects protected sections.
8686`PageCreation::new` appends, or inserts before the first page space of an existing
8787series. `Some("")` creates an empty title field; `None` omits the title node.
88The page has no body outlines, generated date/time text or applied template.
88`dated(date, time)` gives the title OneNote 2010's date and time fields showing that
89text, as OneNote titles a new page; `keeping(identity, created)` keeps another page's
90identity and creation time, as a page moved to the recycle bin keeps them. The page has
91no body outlines or applied template; `create_empty_section` makes a section for such
92pages, and `PageOp::Color` sets or clears a page's colour (`0x14001d2a` on the page node,
93absent for "No color").
8994Retain the intent to preserve its page, title and space identities; existing
9095identities require reconciliation before retry. Body insertion and title edits
9196use those identities through page ops. [Native page-creation fixtures](../../corpus/page-lifecycle/creation/README.md)
crates/onestore/examples/scratch_dump.rs deleted-29
......@@ -1,29 +0,0 @@
1use onestore::{ObjectData, PropertySets, RevisionIndex, Store, Value, document::Document};
2fn main() -> Result<(), Box<dyn std::error::Error>> {
3 let args: Vec<String> = std::env::args().skip(1).collect();
4 let bytes = std::fs::read(&args[0])?;
5 let store = Store::parse(&bytes)?;
6 let index = RevisionIndex::parse(&store)?;
7 let pages = Document::parse(&index).and_then(|document| document.pages()).unwrap_or_default();
8 let space = if args[1] == "root" { index.root } else { pages[args[1].parse::<usize>()?].0 };
9 println!("space {space}; pages {:?}", pages.iter().map(|p| p.0).collect::<Vec<_>>());
10 let raw = index.resolve_active(space)?;
11 for (id, object) in &raw.objects {
12 println!("{id} jcid {:#x}", object.jcid);
13 if let ObjectData::Properties(data) = object.data {
14 let sets = PropertySets::parse(data)?;
15 for (n, set) in sets.sets.iter().enumerate() {
16 for p in set {
17 let v = match &p.value {
18 Value::NoData => "-".to_string(),
19 Value::Bytes(b) => b.iter().map(|x| format!("{x:02x}")).collect(),
20 Value::References { stream, compact_ids } => format!("{stream:?} {}", compact_ids.iter().map(|x| format!("{x:02x}")).collect::<String>()),
21 Value::Sets(r) => format!("sets {r:?}"),
22 };
23 println!(" [{n}] {:#010x} {v}", p.id);
24 }
25 }
26 }
27 }
28 Ok(())
29}
crates/onestore/src/page/mod.rs+1-1
......@@ -52,7 +52,7 @@ mod payload {
5252pub use text::Paragraph;
5353
5454/// The page node's colour (View, Page Color) as COLORREF, absent for "No color"; not in
55/// MS-ONE, observed in OneNote 2010's pages (`evidence/notebook-management`).
55/// MS-ONE, observed in OneNote 2010's pages (`corpus/notebook-management/native/page-color`).
5656pub(crate) const PAGE_COLOR: u32 = 0x14001d2a;
5757
5858/// The role of a title-outline paragraph that displays the page's creation date or time.
crates/onestore/src/pages.rs+17-7
......@@ -264,10 +264,12 @@ fn page_changes<'a>(
264264 let mut series_by_head = BTreeMap::new();
265265 let mut copies = BTreeMap::new();
266266 let mut copy_ids = BTreeSet::new();
267 let mut stale = BTreeSet::new();
267268 for oid in &section_node.children {
268269 let series = &view.nodes[oid];
270 // OneNote leaves the losing side's series empty after a merge; the rewrite drops it.
269271 let Some(head) = series.spaces.first() else {
270 return Err(invalid("A page series must contain at least one page"));
272 continue;
271273 };
272274 if levels.get(head) != Some(&1)
273275 || series.spaces[1..]
......@@ -285,8 +287,11 @@ fn page_changes<'a>(
285287 let FieldValue::Objects(ids) = &field.value else {
286288 return Err(invalid("Page metadata copies must be object references"));
287289 };
288 if ids.len() != series.spaces.len() {
289 return Err(invalid("Page metadata copies must match their series"));
290 // OneNote can leave a page's former copy beside its new one (MS-ONE 2.2.81, note
291 // 9): the last copy of each page stays and the series is rewritten to match.
292 let mismatched = ids.len() != series.spaces.len();
293 if mismatched {
294 stale.insert(*oid);
290295 }
291296 for id in ids {
292297 if !copy_ids.insert(*id)
......@@ -303,7 +308,7 @@ fn page_changes<'a>(
303308 .ok_or_else(|| {
304309 invalid("Metadata copy must identify a page in its series")
305310 })?;
306 if copies.insert(*sid, *id).is_some() {
311 if copies.insert(*sid, *id).is_some() && !mismatched {
307312 return Err(invalid("Each page needs its own ordinary metadata copy"));
308313 }
309314 }
......@@ -372,7 +377,11 @@ fn page_changes<'a>(
372377 let mut children = Vec::new();
373378 for spaces in groups {
374379 let head = spaces[0];
375 let old_id = series_by_head.get(&head).copied();
380 // A moved page heads a series of its own, as OneNote's drag gives one.
381 let moved = selected
382 .get(&head)
383 .is_some_and(|edit| matches!(edit.position, PagePosition::Before(_)));
384 let old_id = series_by_head.get(&head).copied().filter(|_| !moved);
376385 let (id, mut series) = if let Some(id) = old_id {
377386 (id, PropertyObject::from_object(&raw.objects[&id])?)
378387 } else {
......@@ -396,7 +405,8 @@ fn page_changes<'a>(
396405 )
397406 };
398407 children.push(id);
399 let membership_changed = old_id.is_none_or(|old| view.nodes[&old].spaces != spaces);
408 let membership_changed = old_id
409 .is_none_or(|old| view.nodes[&old].spaces != spaces || stale.contains(&old));
400410 if !membership_changed
401411 && !spaces.iter().any(|sid| {
402412 levels[sid] != original_levels[sid]
......@@ -654,7 +664,7 @@ impl PageCreation {
654664 /// The title's second outline as OneNote 2010 writes it for a new page (object numbers,
655665 /// jcids and properties): a read-only outline of two paragraphs, the date then the
656666 /// time, in the `PageDateTime` style.
657 fn date_fields(&self, date: &str, time: &str) -> Vec<(u32, u32, Vec<(u32, Vec<u8>)>)> {
667 fn date_fields(&self, date: &str, time: &str) -> Vec<(u32, u32, crate::op::Values)> {
658668 let reference = |n: u32| n.to_le_bytes().to_vec();
659669 let modified = || (0x14001d7a, self.created.to_le_bytes().to_vec());
660670 let yes = |id: u32| (id | 1 << 31, Vec::new());
crates/onestore/tests/page_movement.rs+40
......@@ -520,3 +520,43 @@ fn repeated_nesting_retains_series_history_across_revision_checkpoints() {
520520 std::fs::write(std::path::Path::new(&output).join("movement.one"), &source).unwrap();
521521 }
522522}
523
524/// A move on a section OneNote merged, which holds empty page series, rewrites the series
525/// without them and gives the moved page one of its own.
526#[test]
527fn a_move_after_a_native_merge_drops_its_empty_series() {
528 let merged = include_bytes!(
529 "../../../corpus/conflict-page/native-pages/merged/notebook/synthetic.one"
530 );
531 let series = |bytes: &[u8]| {
532 let store = Store::parse(bytes).unwrap();
533 let index = RevisionIndex::parse(&store).unwrap();
534 let document = Document::parse(&index).unwrap();
535 let space = &document.spaces[&document.root];
536 let view = &space.revisions[&space.contexts[&ExGuid::default()]];
537 view.nodes[&view.roots[&1]]
538 .children
539 .iter()
540 .map(|id| (*id, view.nodes[id].spaces.clone()))
541 .collect::<Vec<_>>()
542 };
543 let before = series(merged);
544 assert!(before.iter().any(|(_, spaces)| spaces.is_empty()));
545 let ids = pages(merged);
546 let moved = ops::section_op(
547 merged,
548 SectionOp::Pages(vec![PageEdit::move_to(ids[1], None, 1).unwrap()]),
549 )
550 .unwrap();
551 let after = series(moved.as_bytes());
552 assert!(after.iter().all(|(_, spaces)| !spaces.is_empty()));
553 let (id, spaces) = after.last().unwrap();
554 assert_eq!(spaces, &vec![ids[1]]);
555 assert!(before.iter().all(|(old, _)| old != id));
556 assert_eq!(pages(moved.as_bytes()), [&ids[..1], &ids[2..], &ids[1..2]].concat());
557 if let Some(output) = std::env::var_os("ONESTORE_EMPTY_SERIES_EXPORT") {
558 let output = std::path::Path::new(&output);
559 std::fs::create_dir(output).unwrap();
560 std::fs::write(output.join("synthetic.one"), moved.as_bytes()).unwrap();
561 }
562}
tools/canvas/README.md+3-1
......@@ -50,9 +50,11 @@ snowbound title bar · toolbar · section frame · page tabs · the page as a
5050
5151`--notebook FOLDER` opens a notebook laid out as OneNote lays one out. The title bar shows the application's icon and the notebook's name; below it two rows of toolbar buttons follow the Home ribbon's Basic Text group, the first nine tags and zoom (only zoom acts yet). Readable top-level sections are tabs in the notebook's order, each leaning over the next at 45° with a faint highlight along its top, and the open one on top, casting a soft shadow and framing the page and the page tabs on the right in its colour, which shades slightly down the window; a tab that opens rises to meet the frame as its outline fades in. The frame's top corners and the page's corners are rounded concentric with the window's. The open page's tab is the page's colour and joins it with rounded inside corners; subpages are indented. The interface follows the system's light or dark appearance, and in the dark one the page's paper darkens and text left at OneNote's automatic colour turns light (except on a highlight), resolved when painting so nothing re-lays out; explicit colours, highlights, pictures and ink keep theirs, except that the background art of OneNote 2010's page templates, recognised by the picture's hash, paints from bundled vector recreations drawn for the paper. Sections take their stored colour's hue at a saturation and lightness chosen for each appearance. `--ui-font FONT_FILE_OR_FOLDER` sets the interface's typeface in place of the system's; fonts are not bundled. The section's colour is also the interface accent, easing to the next section's when another opens. The search box, New Page and the page-tab toggle sit above the page tabs. Command-F searches the page titles; Enter opens the first match and Escape clears it. A page that also changed on another computer shows Keep mine / Keep theirs above it. `--section FILE TITLE` opens one section the same way at that page. Section files must be regular files; discovery rejects symbolic links.
5252
53Launched without a file, the app reopens the notebooks open when it last closed, at the one shown last, or shows "No notebooks open" with New Notebook and Open Existing. Settings (the open notebooks, the sidebar and recent fonts) are JSON in `~/Library/Application Support/Snowbound/settings.json` or `$XDG_CONFIG_HOME/snowbound`; `--settings FILE` uses another file, `--notebook FOLDER` adds a notebook to them, and `--screenshot` never writes them. Open Existing takes a notebook folder, its `Open Notebook.onetoc2` or a section file, which opens in the notebook its folders make up. A notebook on a mounted SMB share opens through the mount; the embedded SMB client is not yet used for it. The notebook button left of the section tabs opens OneNote 2010's navigation bar: the open notebooks with their sections and section groups, the open section marked; dragging a row reorders a folder or, onto a group, moves into it, and right-clicking a row, a section tab or a page tab offers OneNote's commands (Rename, Delete to the notebook's recycle bin, New Section, New Section Group, Close This Notebook; Delete, New Page, Make Subpage, Promote Subpage). Page tabs drag to reorder. The `+` above the page tabs adds a page at the end of the section, titled with its date and time as OneNote titles one, and puts the caret in its title; until its body is typed in, templates offer our recreations of OneNote 2010's art (Ivy first), its page colours and Informal Meeting Notes' content, written as ops (`corpus/notebook-management`).
54
5355The `ui` crate builds every frame from the application's state. A cache keyed by stable box ids keeps hover, press, focus, scroll and animation values, and the previous frame's layout routes the frame's input before building, so a frame answers input one layout late and paints with its own. Sizes are solved per axis after building: fixed, label-sized, a fraction of an ancestor, or the sum of children, with overflow shared out by each box's strictness. The page is a custom box: `ui` routes it the pointer, wheel, key and input-method events that land on it, in order, and the host hands them to `PageView` and paints the page in a clipped layer of the same frame. Page scrollbars are `ui` widgets over that box; the canvas reports only its scroll bounds. Text fields edit through `draw::edit`, as the page does, so keys, clicks and drags select and move the same way in both. Work the frame asks for (page requests, saving) runs after the frame is painted and requests the frame that shows it. Opening a section or page reads it on a thread of its own while the current page stays live; the newest read is laid out and replaces the page once the pictures it shows first are drawn, or after 200 ms.
5456
55A covered window receives no redraws, so interaction can be scripted: `SNOWBOUND_REPLAY` names a file of `move X Y`, `press`, `release`, `wheel DX DY`, `key NAME`, `type TEXT`, `modifiers [shift] [command]`, `wait MS`, `snapshot PNG_PATH` and `appearance light|dark` lines in logical pixels, and each step and every 16 ms of a wait draws a frame. Snapshots omit the window's traffic lights, which AppKit draws. Replays edit and save like a user, so point them at a copy of a notebook.
57A covered window receives no redraws, so interaction can be scripted: `SNOWBOUND_REPLAY` names a file of `move X Y`, `press [right]`, `release [right]`, `wheel DX DY`, `key NAME`, `type TEXT`, `modifiers [shift] [command]`, `wait MS`, `snapshot PNG_PATH`, `appearance light|dark` and `quit` lines in logical pixels, and each step and every 16 ms of a wait draws a frame. With `--screenshot` as well, the window stays hidden and only the replay's snapshots capture it. Snapshots omit the window's traffic lights, which AppKit draws. Replays edit and save like a user, so point them at a copy of a notebook.
5658
5759```sh
5860cp -RL SOURCE_NOTEBOOK /tmp/notebook-copy && chmod u+w /tmp/notebook-copy/*.one
tools/test_conflict_page.py+8
......@@ -11,6 +11,7 @@ import hashlib
1111
1212from native_xml import pages, texts
1313from document_model import EXPORTER, ordered_pages, view
14from verify_page_creation import compare as compare_graphs
1415
1516ROOT = Path(__file__).resolve().parent.parent
1617FIXTURE = ROOT / 'corpus/conflict-page'
......@@ -149,6 +150,13 @@ class ConflictPageTest(unittest.TestCase):
149150 for title in client:
150151 self.assertNotIn(owner(merged, title), {**initial, **published}, title)
151152
153 def test_onenote_reads_a_rust_move_that_drops_empty_series(self):
154 root = FIXTURE / 'series-move'
155 self.assertEqual((root / 'candidate/synthetic.one').read_bytes()[1024:],
156 (root / 'cold/notebook/synthetic.one').read_bytes()[1024:])
157 self.assertEqual(compare_graphs(root / 'candidate', root / 'cold'), 0)
158 self.assertTrue(all(series(model(root / 'candidate')).values()))
159
152160 def test_a_page_edited_offline_and_deleted_online_comes_back_as_a_new_page(self):
153161 for capture in ('native-pages', 'native-restore'):
154162 root = FIXTURE / capture
tools/test_notebook_management.py created+105
......@@ -0,0 +1,105 @@
1from pathlib import Path
2import runpy
3import shutil
4from tempfile import TemporaryDirectory
5import unittest
6import uuid
7import xml.etree.ElementTree as ET
8
9from native_xml import ns
10
11ROOT = Path(__file__).resolve().parent.parent
12FIXTURE = ROOT / 'corpus/notebook-management'
13compare = runpy.run_path(str(ROOT / 'tools/verify-document.py'))['compare']
14
15
16def file_identity(path):
17 return uuid.UUID(bytes_le=path.read_bytes()[16:32])
18
19
20def tree(node):
21 """Sections, groups and pages as OneNote lists them, with what the app set on each."""
22 out = []
23 for child in node:
24 tag = child.tag.rsplit('}', 1)[-1]
25 if tag in ('Section', 'SectionGroup'):
26 out.append((tag, child.get('name'), child.get('color'), tree(child)))
27 elif tag == 'Page':
28 out.append((tag, child.get('name'), child.get('pageLevel'), child.get('isInRecycleBin')))
29 return out
30
31
32def page(title):
33 for path in sorted((FIXTURE / 'cold/read').glob('page-*.xml')):
34 root = ET.parse(path).getroot()
35 if root.get('name') == title:
36 return root
37 raise AssertionError(f'No page titled {title!r}')
38
39
40class NotebookManagementTest(unittest.TestCase):
41 def test_the_managed_notebook_reopens_natively_as_written(self):
42 with TemporaryDirectory() as temporary:
43 read = Path(temporary) / 'read'
44 shutil.copytree(FIXTURE / 'cold/read', read)
45 compare(FIXTURE / 'candidate', read)
46 for candidate in sorted((FIXTURE / 'candidate').rglob('*.one*')):
47 relative = candidate.relative_to(FIXTURE / 'candidate')
48 self.assertEqual(file_identity(FIXTURE / 'cold/notebook' / relative),
49 file_identity(candidate), str(relative))
50
51 def test_sections_groups_and_pages_sit_where_the_app_put_them(self):
52 hierarchy = ET.parse(FIXTURE / 'cold/read/hierarchy.xml').getroot()
53 self.assertEqual(tree(hierarchy), [
54 ('Section', 'New Section 1', '#8AA8E4', [
55 ('Page', 'Garden plan', '1', None),
56 ('Page', 'Ivy page', '1', None),
57 ('Page', 'Teal page', '1', None),
58 ('Page', 'Subpage', '2', None),
59 ('Page', 'Meeting page', '1', None),
60 ]),
61 ('SectionGroup', 'Archive', None, [
62 ('Section', 'Inner', '#8AA8E4', [('Page', 'Untitled page', '1', None)]),
63 ('Section', 'Kitchen', '#F6B078', [
64 ('Page', 'Untitled page', '1', None),
65 ('Page', 'Moved page', '1', None),
66 ]),
67 ]),
68 ('SectionGroup', 'OneNote_RecycleBin', None, [
69 ('Section', 'Deleted Pages', '#E1E1E1', [('Page', 'Deleted page', '1', 'true')]),
70 ('Section', 'Gone', '#8AA8E4', [('Page', 'Untitled page', '1', 'true')]),
71 ('Section', 'Binned', '#D5A4BB', [('Page', 'Untitled page', '1', 'true')]),
72 ]),
73 ])
74 bin = hierarchy.find("one:SectionGroup[@name='OneNote_RecycleBin']", ns)
75 self.assertEqual(bin.get('isRecycleBin'), 'true')
76 deleted = bin.find("one:Section[@name='Deleted Pages']", ns)
77 self.assertEqual(deleted.get('isDeletedPages'), 'true')
78
79 def test_pages_keep_their_date_colour_and_template_art(self):
80 teal = page('Teal page')
81 self.assertEqual(teal.find('one:PageSettings', ns).get('color'), '#D4F9F2')
82 # The title's second outline holds the date and the time.
83 title = teal.find('one:Title', ns)
84 texts = [t.text for t in title.iter('{%s}T' % ns['one'])]
85 self.assertEqual(len(texts), 1)
86 ivy = page('Ivy page')
87 images = ivy.findall('one:Image', ns)
88 self.assertEqual([image.get('backgroundImage') for image in images], ['true'])
89 self.assertEqual(page('Garden plan').find('one:PageSettings', ns).get('color'), 'automatic')
90
91 def test_meeting_notes_content_reads_back_as_onenote_writes_it(self):
92 meeting = page('Meeting page')
93 self.assertEqual(len(meeting.findall('one:Image', ns)), 1)
94 outlines = meeting.findall('one:Outline', ns)
95 self.assertEqual(len(outlines), 4)
96 texts = [t.text or '' for t in meeting.iter('{%s}T' % ns['one'])]
97 for text in ('Agenda', 'Action Items', 'Important Dates', 'Meeting Details', 'Attendees:', 'Next Meeting'):
98 self.assertTrue(any(text in line for line in texts), text)
99 self.assertEqual(len(meeting.findall('.//one:Tag', ns)), 1)
100 self.assertEqual(len(meeting.findall('.//one:Number', ns)), 1)
101 self.assertEqual(len(meeting.findall('.//one:Bullet', ns)), 11)
102
103
104if __name__ == '__main__':
105 unittest.main()
tools/test_page_movement.py+41
......@@ -90,6 +90,47 @@ class PageMovementTest(unittest.TestCase):
9090 (fixture / 'cold/notebook/Lifecycle.one').read_bytes()[1024:])
9191 self.assertEqual(compare(fixture / 'candidate', fixture / 'cold'), 0)
9292
93 def test_series_rows_survive_native_reopen(self):
94 """Rust moves heading series of their own, and offline batches merged as page series."""
95 def series(one):
96 with TemporaryDirectory() as temporary:
97 subprocess.run([EXPORTER, one, Path(temporary) / 'm'], check=True, capture_output=True)
98 document = json.loads((Path(temporary) / 'm/document.json').read_text())
99 _, root = view(document, document['root'])
100 section = root['nodes'][root['roots']['1']]
101 return {space: oid for oid in section['children'] for space in root['nodes'][oid]['spaces']}
102 edits = FIXTURE / 'page-edits-series'
103 before = series(FIXTURE / '04-nested/notebook/Lifecycle.one')
104 base, previous = list(before), before
105 # The page each phase moves; `05` moves a subpage into its parent's series.
106 moved = {'03-selected-group-move': 3, '04-subpage-move': 4, '08-collapsed-group-move': 4, 'single-page': 3}
107 for phase in sorted(p.name for p in edits.iterdir() if p.is_dir()):
108 with self.subTest(phase=phase):
109 fixture = edits / phase
110 self.assertEqual((fixture / 'candidate/Lifecycle.one').read_bytes()[1024:],
111 (fixture / 'cold/notebook/Lifecycle.one').read_bytes()[1024:])
112 self.assertEqual(compare(fixture / 'candidate', fixture / 'cold'), 0)
113 after = series(fixture / 'candidate/Lifecycle.one')
114 if phase in moved:
115 start = before if phase == 'single-page' else previous
116 self.assertNotIn(after[base[moved[phase]]], start.values())
117 if phase != 'single-page':
118 previous = after
119 offline = FIXTURE / 'offline-edits-series'
120 for case in sorted(p.name for p in offline.iterdir() if p.is_dir() and p.name != 'twelve-clients'):
121 with self.subTest(case=case):
122 source, cold = offline / case / 'candidate', offline / case / 'cold'
123 manifest = json.loads((source / 'manifest.json').read_text())
124 self.assertEqual((manifest['conflict'], manifest['reviewed']), (True, []))
125 repaired = case == 'indent-02-promoted-parent'
126 self.assertEqual(compare(source, cold, refresh_metadata=repaired), int(repaired))
127 if not repaired:
128 self.assertEqual((source / 'Lifecycle.one').read_bytes()[1024:],
129 (cold / 'notebook/Lifecycle.one').read_bytes()[1024:])
130 twelve = offline / 'twelve-clients'
131 self.assertEqual(compare(twelve / 'candidate', twelve / 'cold'), 0)
132 self.assertEqual(json.loads((twelve / 'candidate/manifest.json').read_text())['publications'], 12)
133
93134 def test_repeated_page_nesting_survives_native_reopen_after_checkpoints(self):
94135 fixture = FIXTURE / 'page-edits/stress'
95136 self.assertEqual((fixture / 'candidate/movement.one').read_bytes()[1024:],