authorgravatar for git@paperclover.netclover caruso <git@paperclover.net> 2026-09-08 11:35:35-07:00
committergravatar for git@paperclover.netclover caruso <git@paperclover.net> 2026-09-08 11:35:35-07:00
log423f7adf1aef0ed15f708ddac37865616105bbf3
tree51e4b508bb26d162b7aac93e6d4fe2cec679a6a5
parentcdc3adbfaf940444332bd90ddcdf2c8e6b133040
signature Signed by SSH key SHA256:52mNGHRsVFBDED9IAX5pe+LRWUefqTbxEReunq21QvU

feat: edit outline layout and saved expansion without rewriting content

Add typed position, width and saved collapse edits with a typed user-width reader flag. Preserve identities, content, unknown properties and history, and reject protected or ambiguous ancestry before publication. Cold OneNote captures verify five layout/default edits and replacement of an existing native wrapping reservation. Tests cover 768 stateful changes, publication interruptions, 12-client mixed layout/paragraph fuzzing, and core/offline regressions. Assisted-by: gpt-6-astra

65 files changed, 1046 insertions(+), 6 deletions(-)

corpus/outline-edit/README.md+23-1
......@@ -17,7 +17,7 @@ movement retains them. Native XML can reorder outlines by their positions while
1717the file's page child order remains unchanged. Explicit width sets its native
1818user-size flag; automatic width clears that flag. OneNote regenerates height
1919from content instead of retaining the requested height. These observations
20constrain future typed operations; this corpus is not itself a writer feature.
20constrain typed operations independently of the native COM replacement behavior.
2121
2222Persisted collapse values survive a cold open. Native keyboard collapse/expand
2323can instead change only the client's cached view, so warm COM XML alone does
......@@ -38,3 +38,25 @@ Cold-open `OUTPUT/notebook` into another new output directory with the runner,
3838The controller selects the target again after activating the native window and
3939transfers XML as UTF-8 data. Captured authoring scripts retain their exact source;
4040identical immutable artifacts link to one canonical corpus copy.
41
42`layout/candidate` applies `PreparedEdit::outline` to the five geometry and saved
43collapse cases in `before`. `layout/cold` captures that Rust output through a fresh
44OneNote cache. Every active identity, child/content/structure reference, child level,
45and collapse default survives; text, fields, tags and explicit formatting compare
46against native XML. Fixed width renders at 144 points. The automatic 360-point hint
47renders narrower for this content. Stored height remains a hint; native XML reports
48the content-derived height. All fourteen associated tags and 9,577 explicit format
49comparisons pass for both candidate and native-saved images.
50
51Regenerate the layout candidate with the ignored `export_native_outline_candidates`
52test in `crates/onestore/tests/outline.rs`, setting `ONESTORE_OUTLINE_OUTPUT` to a
53new absolute directory. Cold-open that directory with `tools/native_runner.py`,
54`--expected-pages 15 --collect-notebook`. The captured clone is removed by the runner.
55
56`reserved-width` starts from native `after`, whose moved outline has a reserved
57wrapping width. Rust replaces it with an explicit 144-point width and clears the
58obsolete reservation. Native renders at 144 points after a cold reopen, retaining
59all 304 active graph objects, ten tags and 8,457 explicit formatting comparisons.
60To regenerate, run `resizing_a_native_reserved_width_preserves_content` with
61`ONESTORE_RESERVED_WIDTH_OUTPUT` set to a new absolute directory, then cold-open
62it with the same runner arguments.
corpus/outline-edit/layout/candidate/synthetic.one created
Binary files /dev/null and b/corpus/outline-edit/layout/candidate/synthetic.one differ
corpus/outline-edit/layout/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-05C8C84C -ExpectedPages 15", "exit": 0, "stdout": "Read 1 sections and 15 pages.\r\n", "stderr": "", "error": null}
3{"command": "powershell -NoProfile -Command \"Compress-Archive -Force -Path C:\\one-tests\\runs\\capture\\* -DestinationPath C:\\one-tests\\captured.zip\"", "exit": 0, "stdout": "", "stderr": "", "error": null}
corpus/outline-edit/layout/cold/machine.json created+1
......@@ -0,0 +1 @@
1{"name": "m6-05c8c84c", "hostname": "ONE-M6-05C8C84C"}
corpus/outline-edit/layout/cold/notebook/Open Notebook.onetoc2 created
Binary files /dev/null and b/corpus/outline-edit/layout/cold/notebook/Open Notebook.onetoc2 differ
corpus/outline-edit/layout/cold/notebook/synthetic.one created
Binary files /dev/null and b/corpus/outline-edit/layout/cold/notebook/synthetic.one differ
corpus/outline-edit/layout/cold/read/environment.json created+7
......@@ -0,0 +1,7 @@
1{
2 "powershell": "5.1.14409.1005",
3 "schema": "xs2010",
4 "hostname": "ONE-M6-05C8C84C",
5 "cold": true,
6 "onenote": "14.0.4763.1000"
7}
corpus/outline-edit/layout/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="{A7C93947-7394-4CED-8961-41E9483F6D07}{1}{B0}" path="C:\one-tests\runs\capture\notebook" lastModifiedTime="2026-09-08T18:34:23.000Z" color="#B49EDE"><one:Section name="synthetic" ID="{E9979BE4-9687-009F-259A-13084D2BA1EA}{1}{B0}" path="C:\one-tests\runs\capture\notebook\synthetic.one" lastModifiedTime="2026-09-08T18:34:23.000Z" color="#8AA8E4"><one:Page ID="{C5DE6862-1F4C-438E-A2FD-BB99B113BDF5}{1}{B0}" name="Bold 🦀 italic é color 東京" dateTime="2026-09-05T05:06:54.000Z" lastModifiedTime="2026-09-08T18:34:22.000Z" pageLevel="1"/><one:Page ID="{16E025AE-EED6-47A3-B861-0490A01B1621}{1}{B0}" name="Move leaf down" dateTime="2026-09-08T18:00:47.000Z" lastModifiedTime="2026-09-08T18:34:22.000Z" pageLevel="1"/><one:Page ID="{3A46815C-49E1-4D80-8143-5DEC061CEECE}{1}{B0}" name="Move subtree down" dateTime="2026-09-08T18:00:49.000Z" lastModifiedTime="2026-09-08T18:34:22.000Z" pageLevel="1"/><one:Page ID="{D4FE5FCA-69CE-48E8-B657-81DAE02DE3C3}{1}{B0}" name="Move subtree up" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:34:22.000Z" pageLevel="1"/><one:Page ID="{C4D23575-963D-43A3-A9FB-CF80E47642E1}{1}{B0}" name="Indent subtree" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:34:22.000Z" pageLevel="1"/><one:Page ID="{22425EAA-31B8-404C-B0D3-B8461EBE8502}{1}{B0}" name="Outdent subtree" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:34:22.000Z" pageLevel="1"/><one:Page ID="{5E4EE385-53C9-4FD2-9F44-AD5B68DB417F}{1}{B0}" name="Collapse subtree" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:34:22.000Z" pageLevel="1"/><one:Page ID="{24CD6272-877F-4B1B-8C4C-81CFA308D467}{1}{B0}" name="Expand subtree" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:34:22.000Z" pageLevel="1"/><one:Page ID="{97F9B6C3-15B4-4417-8B6E-75412910B716}{1}{B0}" name="Delete leaf" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:34:22.000Z" pageLevel="1"/><one:Page ID="{2A7C8E19-831D-4669-9F75-175E01C065D9}{1}{B0}" name="Delete subtree" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:34:22.000Z" pageLevel="1"/><one:Page ID="{050D6D34-272A-45D8-96D0-9C728B5F6ECB}{1}{B0}" name="Delete only paragraph" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:34:22.000Z" pageLevel="1"/><one:Page ID="{212E53D5-D6F4-430A-97D0-11D7367BCA6E}{1}{B0}" name="Delete outline" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:34:23.000Z" pageLevel="1"/><one:Page ID="{B7E629D6-389C-4391-9673-EF31B41D1D57}{1}{B0}" name="Move outline" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:34:23.000Z" pageLevel="1"/><one:Page ID="{6C8452B7-22A2-4021-9D2A-069A058EAF65}{1}{B0}" name="Resize outline" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:34:23.000Z" pageLevel="1"/><one:Page ID="{52455FF9-7074-4D15-81A4-98516F776DDA}{1}{B0}" name="Automatic outline size" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:34:23.000Z" pageLevel="1"/></one:Section></one:Notebook>
corpus/outline-edit/layout/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="{050D6D34-272A-45D8-96D0-9C728B5F6ECB}{1}{B0}" name="Delete only paragraph" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:34:22.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{69AE8BA2-3FD9-48D9-8EA8-7F0E74026B15}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Delete only paragraph]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{69AE8BA2-3FD9-48D9-8EA8-7F0E74026B15}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="129.6621246337891" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{69AE8BA2-3FD9-48D9-8EA8-7F0E74026B15}{40}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{69AE8BA2-3FD9-48D9-8EA8-7F0E74026B15}{49}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{69AE8BA2-3FD9-48D9-8EA8-7F0E74026B15}{50}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/outline-edit/layout/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="{16E025AE-EED6-47A3-B861-0490A01B1621}{1}{B0}" name="Move leaf down" dateTime="2026-09-08T18:00:47.000Z" lastModifiedTime="2026-09-08T18:34:22.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:49.000Z" lastModifiedTime="2026-09-08T18:00:49.000Z" objectID="{A2FA96A0-2183-4DE3-B7AF-5102F3E94D77}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Move leaf down]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{A2FA96A0-2183-4DE3-B7AF-5102F3E94D77}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="129.6621246337891" height="40.28315734863281"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:49.000Z" lastModifiedTime="2026-09-08T18:00:49.000Z" objectID="{A2FA96A0-2183-4DE3-B7AF-5102F3E94D77}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anchor]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:48.000Z" lastModifiedTime="2026-09-08T18:00:49.000Z" objectID="{A2FA96A0-2183-4DE3-B7AF-5102F3E94D77}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:49.000Z" lastModifiedTime="2026-09-08T18:00:49.000Z" objectID="{A2FA96A0-2183-4DE3-B7AF-5102F3E94D77}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{A2FA96A0-2183-4DE3-B7AF-5102F3E94D77}{59}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:49.000Z" lastModifiedTime="2026-09-08T18:00:49.000Z" objectID="{A2FA96A0-2183-4DE3-B7AF-5102F3E94D77}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/outline-edit/layout/cold/read/page-002.xml created+5
......@@ -0,0 +1,5 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{212E53D5-D6F4-430A-97D0-11D7367BCA6E}{1}{B0}" name="Delete outline" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:34:23.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{D9BF3B1D-AA6C-4DE8-BAC4-1135A9C631D5}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Delete outline]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{D9BF3B1D-AA6C-4DE8-BAC4-1135A9C631D5}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="142.6107788085937" height="67.13858032226562"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{D9BF3B1D-AA6C-4DE8-BAC4-1135A9C631D5}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anchor]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{D9BF3B1D-AA6C-4DE8-BAC4-1135A9C631D5}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{D9BF3B1D-AA6C-4DE8-BAC4-1135A9C631D5}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
5style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{D9BF3B1D-AA6C-4DE8-BAC4-1135A9C631D5}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{D9BF3B1D-AA6C-4DE8-BAC4-1135A9C631D5}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{D9BF3B1D-AA6C-4DE8-BAC4-1135A9C631D5}{70}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{D9BF3B1D-AA6C-4DE8-BAC4-1135A9C631D5}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/outline-edit/layout/cold/read/page-003.xml created+5
......@@ -0,0 +1,5 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{22425EAA-31B8-404C-B0D3-B8461EBE8502}{1}{B0}" name="Outdent subtree" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:34:22.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{BB4BDC9D-B83B-4E80-A264-DC7E8C67A6AB}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Outdent subtree]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{BB4BDC9D-B83B-4E80-A264-DC7E8C67A6AB}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="169.6107788085937" height="67.13858032226562"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{BB4BDC9D-B83B-4E80-A264-DC7E8C67A6AB}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anchor]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{BB4BDC9D-B83B-4E80-A264-DC7E8C67A6AB}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{BB4BDC9D-B83B-4E80-A264-DC7E8C67A6AB}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
5style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{BB4BDC9D-B83B-4E80-A264-DC7E8C67A6AB}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{BB4BDC9D-B83B-4E80-A264-DC7E8C67A6AB}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{BB4BDC9D-B83B-4E80-A264-DC7E8C67A6AB}{70}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{BB4BDC9D-B83B-4E80-A264-DC7E8C67A6AB}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/outline-edit/layout/cold/read/page-004.xml created+5
......@@ -0,0 +1,5 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{24CD6272-877F-4B1B-8C4C-81CFA308D467}{1}{B0}" name="Expand subtree" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:34:22.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{10DB81A8-1361-4BDF-908B-2C014E3F1ACB}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Expand subtree]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:32:55.000Z" objectID="{10DB81A8-1361-4BDF-908B-2C014E3F1ACB}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="142.6107788085937" height="67.13858032226562"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{10DB81A8-1361-4BDF-908B-2C014E3F1ACB}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anchor]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:32:55.000Z" objectID="{10DB81A8-1361-4BDF-908B-2C014E3F1ACB}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{10DB81A8-1361-4BDF-908B-2C014E3F1ACB}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
5style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{10DB81A8-1361-4BDF-908B-2C014E3F1ACB}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{10DB81A8-1361-4BDF-908B-2C014E3F1ACB}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{10DB81A8-1361-4BDF-908B-2C014E3F1ACB}{70}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{10DB81A8-1361-4BDF-908B-2C014E3F1ACB}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/outline-edit/layout/cold/read/page-005.xml created+5
......@@ -0,0 +1,5 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{2A7C8E19-831D-4669-9F75-175E01C065D9}{1}{B0}" name="Delete subtree" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:34:22.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{D25E2B33-9141-41DA-9F3E-6F78B251000D}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Delete subtree]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{D25E2B33-9141-41DA-9F3E-6F78B251000D}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="142.6107788085937" height="67.13858032226562"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{D25E2B33-9141-41DA-9F3E-6F78B251000D}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anchor]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{D25E2B33-9141-41DA-9F3E-6F78B251000D}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{D25E2B33-9141-41DA-9F3E-6F78B251000D}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
5style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{D25E2B33-9141-41DA-9F3E-6F78B251000D}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{D25E2B33-9141-41DA-9F3E-6F78B251000D}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{D25E2B33-9141-41DA-9F3E-6F78B251000D}{70}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{D25E2B33-9141-41DA-9F3E-6F78B251000D}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/outline-edit/layout/cold/read/page-006.xml created+5
......@@ -0,0 +1,5 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{3A46815C-49E1-4D80-8143-5DEC061CEECE}{1}{B0}" name="Move subtree down" dateTime="2026-09-08T18:00:49.000Z" lastModifiedTime="2026-09-08T18:34:22.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{465C52D4-EE9A-4BF6-81C2-052DCE414D61}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Move subtree down]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{465C52D4-EE9A-4BF6-81C2-052DCE414D61}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="142.6107788085937" height="67.13858032226562"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:49.000Z" lastModifiedTime="2026-09-08T18:00:49.000Z" objectID="{465C52D4-EE9A-4BF6-81C2-052DCE414D61}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anchor]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:49.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{465C52D4-EE9A-4BF6-81C2-052DCE414D61}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{465C52D4-EE9A-4BF6-81C2-052DCE414D61}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
5style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{465C52D4-EE9A-4BF6-81C2-052DCE414D61}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{465C52D4-EE9A-4BF6-81C2-052DCE414D61}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{465C52D4-EE9A-4BF6-81C2-052DCE414D61}{70}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{465C52D4-EE9A-4BF6-81C2-052DCE414D61}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/outline-edit/layout/cold/read/page-007.xml created+5
......@@ -0,0 +1,5 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{52455FF9-7074-4D15-81A4-98516F776DDA}{1}{B0}" name="Automatic outline size" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:34:23.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{6FF0088D-CA23-494E-B101-1169106A4000}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Automatic outline size]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:32:55.000Z" objectID="{6FF0088D-CA23-494E-B101-1169106A4000}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="142.6107788085937" height="67.13858032226562"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{6FF0088D-CA23-494E-B101-1169106A4000}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anchor]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{6FF0088D-CA23-494E-B101-1169106A4000}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{6FF0088D-CA23-494E-B101-1169106A4000}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
5style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{6FF0088D-CA23-494E-B101-1169106A4000}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{6FF0088D-CA23-494E-B101-1169106A4000}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{6FF0088D-CA23-494E-B101-1169106A4000}{70}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{6FF0088D-CA23-494E-B101-1169106A4000}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/outline-edit/layout/cold/read/page-008.xml created+5
......@@ -0,0 +1,5 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{5E4EE385-53C9-4FD2-9F44-AD5B68DB417F}{1}{B0}" name="Collapse subtree" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:34:22.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{D2B39E47-79A5-4435-9F23-3A5FF111C318}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Collapse subtree]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:32:55.000Z" objectID="{D2B39E47-79A5-4435-9F23-3A5FF111C318}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="129.6621246337891" height="40.28315734863281"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{D2B39E47-79A5-4435-9F23-3A5FF111C318}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anchor]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:32:55.000Z" collapsed="1" objectID="{D2B39E47-79A5-4435-9F23-3A5FF111C318}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{D2B39E47-79A5-4435-9F23-3A5FF111C318}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
5style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{D2B39E47-79A5-4435-9F23-3A5FF111C318}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{D2B39E47-79A5-4435-9F23-3A5FF111C318}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{D2B39E47-79A5-4435-9F23-3A5FF111C318}{70}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{D2B39E47-79A5-4435-9F23-3A5FF111C318}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/outline-edit/layout/cold/read/page-009.xml created+5
......@@ -0,0 +1,5 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{6C8452B7-22A2-4021-9D2A-069A058EAF65}{1}{B0}" name="Resize outline" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:34:23.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{A545326F-8206-4AD3-AE58-155575F20227}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Resize outline]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:32:55.000Z" objectID="{A545326F-8206-4AD3-AE58-155575F20227}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="144.0" height="67.13858032226562" isSetByUser="true"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{A545326F-8206-4AD3-AE58-155575F20227}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anchor]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{A545326F-8206-4AD3-AE58-155575F20227}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{A545326F-8206-4AD3-AE58-155575F20227}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
5style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{A545326F-8206-4AD3-AE58-155575F20227}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{A545326F-8206-4AD3-AE58-155575F20227}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{A545326F-8206-4AD3-AE58-155575F20227}{70}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{A545326F-8206-4AD3-AE58-155575F20227}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/outline-edit/layout/cold/read/page-010.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="{97F9B6C3-15B4-4417-8B6E-75412910B716}{1}{B0}" name="Delete leaf" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:34:22.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{7D51397A-9C65-4371-BF6B-88208CE6028D}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Delete leaf]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{7D51397A-9C65-4371-BF6B-88208CE6028D}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="129.6621246337891" height="40.28315734863281"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{7D51397A-9C65-4371-BF6B-88208CE6028D}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anchor]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{7D51397A-9C65-4371-BF6B-88208CE6028D}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{7D51397A-9C65-4371-BF6B-88208CE6028D}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{7D51397A-9C65-4371-BF6B-88208CE6028D}{59}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{7D51397A-9C65-4371-BF6B-88208CE6028D}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/outline-edit/layout/cold/read/page-011.xml created+5
......@@ -0,0 +1,5 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{B7E629D6-389C-4391-9673-EF31B41D1D57}{1}{B0}" name="Move outline" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:34:23.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{E7EDC00D-ADAF-4D31-98FC-382A9AE59D1C}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Move outline]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{E7EDC00D-ADAF-4D31-98FC-382A9AE59D1C}{70}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{E7EDC00D-ADAF-4D31-98FC-382A9AE59D1C}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:32:55.000Z" objectID="{E7EDC00D-ADAF-4D31-98FC-382A9AE59D1C}{39}{B0}"><one:Position x="180.0" y="216.0" z="0"/><one:Size width="142.6107788085937" height="67.13858032226562"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{E7EDC00D-ADAF-4D31-98FC-382A9AE59D1C}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anchor]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{E7EDC00D-ADAF-4D31-98FC-382A9AE59D1C}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{E7EDC00D-ADAF-4D31-98FC-382A9AE59D1C}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
5style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{E7EDC00D-ADAF-4D31-98FC-382A9AE59D1C}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{E7EDC00D-ADAF-4D31-98FC-382A9AE59D1C}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/outline-edit/layout/cold/read/page-012.xml created+5
......@@ -0,0 +1,5 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{C4D23575-963D-43A3-A9FB-CF80E47642E1}{1}{B0}" name="Indent subtree" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:34:22.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{FB4F6598-5956-47FF-B433-1504B95FB6D0}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Indent subtree]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{FB4F6598-5956-47FF-B433-1504B95FB6D0}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="142.6107788085937" height="67.13858032226562"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{FB4F6598-5956-47FF-B433-1504B95FB6D0}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anchor]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{FB4F6598-5956-47FF-B433-1504B95FB6D0}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{FB4F6598-5956-47FF-B433-1504B95FB6D0}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
5style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{FB4F6598-5956-47FF-B433-1504B95FB6D0}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{FB4F6598-5956-47FF-B433-1504B95FB6D0}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{FB4F6598-5956-47FF-B433-1504B95FB6D0}{70}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{FB4F6598-5956-47FF-B433-1504B95FB6D0}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/outline-edit/layout/cold/read/page-013.xml created+20
......@@ -0,0 +1,20 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{C5DE6862-1F4C-438E-A2FD-BB99B113BDF5}{1}{B0}" name="Bold 🦀 italic é color 東京" dateTime="2026-09-05T05:06:54.000Z" lastModifiedTime="2026-09-08T18:34:22.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="Rich author" lastModifiedBy="Rich author" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{A212C0DE-5439-4038-AD0F-37424E8F5894}{10}{B0}"><one:Position x="36.0" y="14.40000057220459" z="0"/><one:Size width="127.5136947631836" height="42.90299224853515"/><one:OEChildren><one:OE creationTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{A5776829-A744-0B32-1D5B-F44885E42A62}{1}{B0}" alignment="left"><one:T><![CDATA[<span style='font-weight:bold;
3text-decoration:underline;font-family:Calibri;font-size:11.0pt'>Bold</span><span
4style='font-family:Calibri;font-size:11.0pt'> </span><span style='font-family:
5Arial;font-size:13.5pt'>&#129408;</span><span style='font-family:Calibri;
6font-size:11.0pt'> </span><span style='font-style:italic;text-decoration:line-through;
7font-family:Calibri;font-size:11.0pt'>italic</span><span style='font-family:
8Calibri;font-size:11.0pt'> </span><span style='vertical-align:super;font-family:
9Calibri;font-size:11.0pt'>é</span><span style='font-family:Calibri;font-size:
1011.0pt'> </span><span style='font-family:Calibri;font-size:11.0pt;color:#0C2238;
11background:yellow;mso-highlight:yellow'>color</span><span style='font-family:
12Calibri;font-size:11.0pt'> </span><span style='vertical-align:sub;font-family:
13Calibri;font-size:11.0pt'>東京</span><span style='font-family:Calibri;font-size:
1411.0pt'><br>
15End</span>]]></one:T></one:OE><one:OE author="snow" authorInitials="S" lastModifiedBy="snow" lastModifiedByInitials="S" creationTime="2026-09-05T05:06:55.000Z" lastModifiedTime="2026-09-05T05:06:56.000Z" objectID="{A212C0DE-5439-4038-AD0F-37424E8F5894}{11}{B0}" alignment="left" quickStyleIndex="0" style="font-size:11.0pt;color:#1F4E79"><one:T><![CDATA[<span
16style='font-weight:bold;font-family:Calibri' lang=en-US>Fictitious: café, </span><span
17style='font-weight:bold;font-family:SimSun' lang=en-US>東京</span><span
18style='font-weight:bold;font-family:Calibri' lang=en-US>, </span><span
19style='font-weight:bold;font-family:Arial;direction:rtl;unicode-bidi:embed'
20lang=ar-SA>مرحبا</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/outline-edit/layout/cold/read/page-014.xml created+5
......@@ -0,0 +1,5 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{D4FE5FCA-69CE-48E8-B657-81DAE02DE3C3}{1}{B0}" name="Move subtree up" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:34:22.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{9E81500C-A190-4A0E-822A-20D3F428D449}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Move subtree up]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{9E81500C-A190-4A0E-822A-20D3F428D449}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="142.6107788085937" height="67.13858032226562"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{9E81500C-A190-4A0E-822A-20D3F428D449}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anchor]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{9E81500C-A190-4A0E-822A-20D3F428D449}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{9E81500C-A190-4A0E-822A-20D3F428D449}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
5style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{9E81500C-A190-4A0E-822A-20D3F428D449}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{9E81500C-A190-4A0E-822A-20D3F428D449}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{9E81500C-A190-4A0E-822A-20D3F428D449}{70}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{9E81500C-A190-4A0E-822A-20D3F428D449}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/outline-edit/layout/cold/read/payloads.json created+1
......@@ -0,0 +1 @@
1../../../../paragraph-edit/before/read/payloads.json
\ No newline at end of file
corpus/outline-edit/layout/cold/run.json created+18
......@@ -0,0 +1,18 @@
1{
2 "notebook": "/Users/clo/dev/one/evidence/m10/outline-rust-candidate-01",
3 "expected_pages": 15,
4 "author": null,
5 "author_timeout_seconds": 600,
6 "inspect": false,
7 "collect_notebook": true,
8 "base": {
9 "file": "win7-office-base.qcow2",
10 "format": "qcow2",
11 "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346",
12 "virtual_size": 68719476736
13 },
14 "scripts": {
15 "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331",
16 "read.ps1": "04013bfcccee40a17e2a225f9b9e96f40a3a8daad9e350609654f8eda3ccbb41"
17 }
18}
corpus/outline-edit/layout/cold/scripts/cold.ps1 created+1
......@@ -0,0 +1 @@
1../../../../paragraph-edit/reconciliation/keyboard/scripts/cold.ps1
\ No newline at end of file
corpus/outline-edit/layout/cold/scripts/read.ps1 created+1
......@@ -0,0 +1 @@
1../../../../paragraph-edit/reconciliation/keyboard/scripts/read.ps1
\ No newline at end of file
corpus/outline-edit/layout/cold/source.json created+8
......@@ -0,0 +1,8 @@
1[
2 {
3 "path": "synthetic.one",
4 "bytes": 104504,
5 "sha256": "3b000949d72c206f57bcdbf4ebc4aa90a738a0bf7c86f1bf4c226655b5202d59",
6 "mtime_ns": 1788892375964323634
7 }
8]
corpus/outline-edit/layout/cold/teardown.json created+1
......@@ -0,0 +1 @@
1{"absent": true}
corpus/outline-edit/reserved-width/candidate/synthetic.one created
Binary files /dev/null and b/corpus/outline-edit/reserved-width/candidate/synthetic.one differ
corpus/outline-edit/reserved-width/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-6B4076E4 -ExpectedPages 15", "exit": 0, "stdout": "Read 1 sections and 15 pages.\r\n", "stderr": "", "error": null}
3{"command": "powershell -NoProfile -Command \"Compress-Archive -Force -Path C:\\one-tests\\runs\\capture\\* -DestinationPath C:\\one-tests\\captured.zip\"", "exit": 0, "stdout": "", "stderr": "", "error": null}
corpus/outline-edit/reserved-width/cold/machine.json created+1
......@@ -0,0 +1 @@
1{"name": "m6-6b4076e4", "hostname": "ONE-M6-6B4076E4"}
corpus/outline-edit/reserved-width/cold/notebook/Open Notebook.onetoc2 created
Binary files /dev/null and b/corpus/outline-edit/reserved-width/cold/notebook/Open Notebook.onetoc2 differ
corpus/outline-edit/reserved-width/cold/notebook/synthetic.one created
Binary files /dev/null and b/corpus/outline-edit/reserved-width/cold/notebook/synthetic.one differ
corpus/outline-edit/reserved-width/cold/read/environment.json created+7
......@@ -0,0 +1,7 @@
1{
2 "powershell": "5.1.14409.1005",
3 "schema": "xs2010",
4 "hostname": "ONE-M6-6B4076E4",
5 "cold": true,
6 "onenote": "14.0.4763.1000"
7}
corpus/outline-edit/reserved-width/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="{FC2D0D14-5246-4133-8B45-65CF72A6C1C9}{1}{B0}" path="C:\one-tests\runs\capture\notebook" lastModifiedTime="2026-09-08T18:41:01.000Z" color="#B49EDE"><one:Section name="synthetic" ID="{46677835-0E6D-0454-05EA-582F13F26121}{1}{B0}" path="C:\one-tests\runs\capture\notebook\synthetic.one" lastModifiedTime="2026-09-08T18:41:01.000Z" color="#8AA8E4"><one:Page ID="{6A2E8BB3-87A6-4745-828D-F0BEEFCA7D3E}{1}{B0}" name="Bold 🦀 italic é color 東京" dateTime="2026-09-05T05:06:54.000Z" lastModifiedTime="2026-09-08T18:41:00.000Z" pageLevel="1"/><one:Page ID="{B910C67F-763C-4368-9811-4FB7FEC2D6EA}{1}{B0}" name="Move leaf down" dateTime="2026-09-08T18:00:47.000Z" lastModifiedTime="2026-09-08T18:02:45.000Z" pageLevel="1"/><one:Page ID="{95B6628D-D10B-494B-A133-16CB58C52E05}{1}{B0}" name="Move subtree down" dateTime="2026-09-08T18:00:49.000Z" lastModifiedTime="2026-09-08T18:02:47.000Z" pageLevel="1"/><one:Page ID="{7B0EBC1B-F124-4C23-9627-CAFDBEF42308}{1}{B0}" name="Move subtree up" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:02:49.000Z" pageLevel="1"/><one:Page ID="{6B22D6A4-0ED7-4768-898B-84A7BAAF822A}{1}{B0}" name="Indent subtree" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:02:50.000Z" pageLevel="1"/><one:Page ID="{8DB2BD7B-A952-4487-90A3-F361406745C9}{1}{B0}" name="Outdent subtree" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:02:52.000Z" pageLevel="1"/><one:Page ID="{F1BE0054-CB23-4B19-BF34-E67C360281B4}{1}{B0}" name="Collapse subtree" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:41:00.000Z" pageLevel="1"/><one:Page ID="{8B3D81A3-1F95-4FD0-AC3C-CAE8FDD114AC}{1}{B0}" name="Expand subtree" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:41:00.000Z" pageLevel="1"/><one:Page ID="{38095512-8D5E-40DC-AB1E-3E6677C977DD}{1}{B0}" name="Delete leaf" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:03:01.000Z" pageLevel="1"/><one:Page ID="{858C6DC8-1BF7-42A2-BF05-5C795F19A512}{1}{B0}" name="Delete subtree" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:03:03.000Z" pageLevel="1"/><one:Page ID="{AAFD8EE5-BFC0-4113-B6A0-D755D586AE00}{1}{B0}" name="Delete only paragraph" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:03:05.000Z" pageLevel="1"/><one:Page ID="{8EDEB004-4E1E-47C1-B7A0-5AF068A20AA5}{1}{B0}" name="Delete outline" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:41:01.000Z" pageLevel="1"/><one:Page ID="{1816CA07-A076-475A-B603-A416EAC4DD9C}{1}{B0}" name="Move outline" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:41:01.000Z" pageLevel="1"/><one:Page ID="{C374B166-BA48-44EA-BD5A-4DBD5B576FAE}{1}{B0}" name="Resize outline" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:41:01.000Z" pageLevel="1"/><one:Page ID="{FDB5BC28-E89E-49DE-A1D4-D37631AEAD11}{1}{B0}" name="Automatic outline size" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:41:01.000Z" pageLevel="1"/></one:Section></one:Notebook>
corpus/outline-edit/reserved-width/cold/read/page-000.xml created+5
......@@ -0,0 +1,5 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{1816CA07-A076-475A-B603-A416EAC4DD9C}{1}{B0}" name="Move outline" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:41:01.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{481D23DC-3545-49FA-B88C-730DC43C5DD7}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Move outline]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{481D23DC-3545-49FA-B88C-730DC43C5DD7}{70}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{481D23DC-3545-49FA-B88C-730DC43C5DD7}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:39:33.000Z" objectID="{481D23DC-3545-49FA-B88C-730DC43C5DD7}{39}{B0}"><one:Position x="180.0" y="216.0" z="0"/><one:Size width="144.0" height="67.13858032226562" isSetByUser="true"/><one:OEChildren><one:OE creationTime="2026-09-08T18:03:10.000Z" lastModifiedTime="2026-09-08T18:03:10.000Z" objectID="{481D23DC-3545-49FA-B88C-730DC43C5DD7}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anchor]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:03:10.000Z" objectID="{481D23DC-3545-49FA-B88C-730DC43C5DD7}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:03:10.000Z" lastModifiedTime="2026-09-08T18:03:10.000Z" objectID="{481D23DC-3545-49FA-B88C-730DC43C5DD7}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
5style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:03:10.000Z" lastModifiedTime="2026-09-08T18:03:10.000Z" objectID="{481D23DC-3545-49FA-B88C-730DC43C5DD7}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE><one:OE creationTime="2026-09-08T18:03:10.000Z" lastModifiedTime="2026-09-08T18:03:10.000Z" objectID="{481D23DC-3545-49FA-B88C-730DC43C5DD7}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/outline-edit/reserved-width/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="{38095512-8D5E-40DC-AB1E-3E6677C977DD}{1}{B0}" name="Delete leaf" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:03: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-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:03:00.000Z" objectID="{D2A1DAAB-048F-47BA-9F1B-C307D23FC246}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Delete leaf]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:03:01.000Z" objectID="{D2A1DAAB-048F-47BA-9F1B-C307D23FC246}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="103.8432159423828" height="26.85543441772461"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:03:00.000Z" objectID="{D2A1DAAB-048F-47BA-9F1B-C307D23FC246}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anchor]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:03:00.000Z" objectID="{D2A1DAAB-048F-47BA-9F1B-C307D23FC246}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:03:00.000Z" objectID="{D2A1DAAB-048F-47BA-9F1B-C307D23FC246}{59}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:03:00.000Z" objectID="{D2A1DAAB-048F-47BA-9F1B-C307D23FC246}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/outline-edit/reserved-width/cold/read/page-002.xml created+20
......@@ -0,0 +1,20 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{6A2E8BB3-87A6-4745-828D-F0BEEFCA7D3E}{1}{B0}" name="Bold 🦀 italic é color 東京" dateTime="2026-09-05T05:06:54.000Z" lastModifiedTime="2026-09-08T18:41:00.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="Rich author" lastModifiedBy="Rich author" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{0DE2230F-CCD3-44F3-8D7F-7C651056985F}{10}{B0}"><one:Position x="36.0" y="14.40000057220459" z="0"/><one:Size width="127.5136947631836" height="42.90299224853515"/><one:OEChildren><one:OE creationTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{0A878BF8-3FAE-0FF9-3D2B-BF6FDB3DEAA9}{1}{B0}" alignment="left"><one:T><![CDATA[<span style='font-weight:bold;
3text-decoration:underline;font-family:Calibri;font-size:11.0pt'>Bold</span><span
4style='font-family:Calibri;font-size:11.0pt'> </span><span style='font-family:
5Arial;font-size:13.5pt'>&#129408;</span><span style='font-family:Calibri;
6font-size:11.0pt'> </span><span style='font-style:italic;text-decoration:line-through;
7font-family:Calibri;font-size:11.0pt'>italic</span><span style='font-family:
8Calibri;font-size:11.0pt'> </span><span style='vertical-align:super;font-family:
9Calibri;font-size:11.0pt'>é</span><span style='font-family:Calibri;font-size:
1011.0pt'> </span><span style='font-family:Calibri;font-size:11.0pt;color:#0C2238;
11background:yellow;mso-highlight:yellow'>color</span><span style='font-family:
12Calibri;font-size:11.0pt'> </span><span style='vertical-align:sub;font-family:
13Calibri;font-size:11.0pt'>東京</span><span style='font-family:Calibri;font-size:
1411.0pt'><br>
15End</span>]]></one:T></one:OE><one:OE author="snow" authorInitials="S" lastModifiedBy="snow" lastModifiedByInitials="S" creationTime="2026-09-05T05:06:55.000Z" lastModifiedTime="2026-09-05T05:06:56.000Z" objectID="{0DE2230F-CCD3-44F3-8D7F-7C651056985F}{11}{B0}" alignment="left" quickStyleIndex="0" style="font-size:11.0pt;color:#1F4E79"><one:T><![CDATA[<span
16style='font-weight:bold;font-family:Calibri' lang=en-US>Fictitious: café, </span><span
17style='font-weight:bold;font-family:SimSun' lang=en-US>東京</span><span
18style='font-weight:bold;font-family:Calibri' lang=en-US>, </span><span
19style='font-weight:bold;font-family:Arial;direction:rtl;unicode-bidi:embed'
20lang=ar-SA>مرحبا</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/outline-edit/reserved-width/cold/read/page-003.xml created+5
......@@ -0,0 +1,5 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{6B22D6A4-0ED7-4768-898B-84A7BAAF822A}{1}{B0}" name="Indent subtree" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:02:50.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{54BF8649-C1BC-4334-9443-5E23E786761B}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Indent subtree]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:02:50.000Z" objectID="{54BF8649-C1BC-4334-9443-5E23E786761B}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="169.6107788085937" height="67.13858032226562"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:02:50.000Z" objectID="{54BF8649-C1BC-4334-9443-5E23E786761B}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anchor]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:02:50.000Z" objectID="{54BF8649-C1BC-4334-9443-5E23E786761B}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:02:50.000Z" objectID="{54BF8649-C1BC-4334-9443-5E23E786761B}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
5style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:02:50.000Z" objectID="{54BF8649-C1BC-4334-9443-5E23E786761B}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:02:50.000Z" objectID="{54BF8649-C1BC-4334-9443-5E23E786761B}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:02:50.000Z" objectID="{54BF8649-C1BC-4334-9443-5E23E786761B}{70}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:02:50.000Z" objectID="{54BF8649-C1BC-4334-9443-5E23E786761B}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/outline-edit/reserved-width/cold/read/page-004.xml created+5
......@@ -0,0 +1,5 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{7B0EBC1B-F124-4C23-9627-CAFDBEF42308}{1}{B0}" name="Move subtree up" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:02:49.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{3171B3DD-397A-4EC5-A25A-6BF4AAF11482}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Move subtree up]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:02:49.000Z" objectID="{3171B3DD-397A-4EC5-A25A-6BF4AAF11482}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="142.6107788085937" height="67.13858032226562"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:02:48.000Z" objectID="{3171B3DD-397A-4EC5-A25A-6BF4AAF11482}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:02:48.000Z" objectID="{3171B3DD-397A-4EC5-A25A-6BF4AAF11482}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
5style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:02:48.000Z" objectID="{3171B3DD-397A-4EC5-A25A-6BF4AAF11482}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:02:48.000Z" objectID="{3171B3DD-397A-4EC5-A25A-6BF4AAF11482}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anchor]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:02:48.000Z" objectID="{3171B3DD-397A-4EC5-A25A-6BF4AAF11482}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:02:48.000Z" objectID="{3171B3DD-397A-4EC5-A25A-6BF4AAF11482}{70}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:02:48.000Z" objectID="{3171B3DD-397A-4EC5-A25A-6BF4AAF11482}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/outline-edit/reserved-width/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="{858C6DC8-1BF7-42A2-BF05-5C795F19A512}{1}{B0}" name="Delete subtree" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:03:03.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-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{7DAEC8E2-09AB-4511-BF4E-245FEC88C0C6}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Delete subtree]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:03:03.000Z" objectID="{7DAEC8E2-09AB-4511-BF4E-245FEC88C0C6}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="103.8432159423828" height="26.85543441772461"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:03:02.000Z" objectID="{7DAEC8E2-09AB-4511-BF4E-245FEC88C0C6}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anchor]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:03:02.000Z" objectID="{7DAEC8E2-09AB-4511-BF4E-245FEC88C0C6}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:03:02.000Z" objectID="{7DAEC8E2-09AB-4511-BF4E-245FEC88C0C6}{70}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:03:02.000Z" objectID="{7DAEC8E2-09AB-4511-BF4E-245FEC88C0C6}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/outline-edit/reserved-width/cold/read/page-006.xml created+5
......@@ -0,0 +1,5 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{8B3D81A3-1F95-4FD0-AC3C-CAE8FDD114AC}{1}{B0}" name="Expand subtree" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:41:00.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{BF2B6279-8B8B-4F14-B0FB-672610E6DA00}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Expand subtree]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:02:59.000Z" objectID="{BF2B6279-8B8B-4F14-B0FB-672610E6DA00}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="129.6621246337891" height="67.13858032226562"/><one:OEChildren><one:OE creationTime="2026-09-08T18:02:59.000Z" lastModifiedTime="2026-09-08T18:02:59.000Z" objectID="{BF2B6279-8B8B-4F14-B0FB-672610E6DA00}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anchor]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:02:59.000Z" objectID="{BF2B6279-8B8B-4F14-B0FB-672610E6DA00}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:02:59.000Z" lastModifiedTime="2026-09-08T18:02:59.000Z" objectID="{BF2B6279-8B8B-4F14-B0FB-672610E6DA00}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
5style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:02:59.000Z" lastModifiedTime="2026-09-08T18:02:59.000Z" objectID="{BF2B6279-8B8B-4F14-B0FB-672610E6DA00}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE><one:OE creationTime="2026-09-08T18:02:59.000Z" lastModifiedTime="2026-09-08T18:02:59.000Z" objectID="{BF2B6279-8B8B-4F14-B0FB-672610E6DA00}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{BF2B6279-8B8B-4F14-B0FB-672610E6DA00}{70}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{BF2B6279-8B8B-4F14-B0FB-672610E6DA00}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/outline-edit/reserved-width/cold/read/page-007.xml created+5
......@@ -0,0 +1,5 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{8DB2BD7B-A952-4487-90A3-F361406745C9}{1}{B0}" name="Outdent subtree" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:02:52.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{14BB3F4C-20D1-4A4B-8214-9759D2BE6660}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Outdent subtree]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:02:52.000Z" objectID="{14BB3F4C-20D1-4A4B-8214-9759D2BE6660}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="142.6107788085937" height="67.13858032226562"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:02:52.000Z" objectID="{14BB3F4C-20D1-4A4B-8214-9759D2BE6660}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anchor]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:02:52.000Z" objectID="{14BB3F4C-20D1-4A4B-8214-9759D2BE6660}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:02:52.000Z" objectID="{14BB3F4C-20D1-4A4B-8214-9759D2BE6660}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
5style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:02:52.000Z" objectID="{14BB3F4C-20D1-4A4B-8214-9759D2BE6660}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:02:52.000Z" objectID="{14BB3F4C-20D1-4A4B-8214-9759D2BE6660}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:02:52.000Z" objectID="{14BB3F4C-20D1-4A4B-8214-9759D2BE6660}{70}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:02:52.000Z" objectID="{14BB3F4C-20D1-4A4B-8214-9759D2BE6660}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/outline-edit/reserved-width/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="{8EDEB004-4E1E-47C1-B7A0-5AF068A20AA5}{1}{B0}" name="Delete outline" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:41: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-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{764FD8CC-3286-4923-9AB4-5A12F71FF11E}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Delete outline]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{764FD8CC-3286-4923-9AB4-5A12F71FF11E}{70}{B0}"><one:Position x="480.0" y="108.0" z="0"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{764FD8CC-3286-4923-9AB4-5A12F71FF11E}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/outline-edit/reserved-width/cold/read/page-009.xml created+5
......@@ -0,0 +1,5 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{95B6628D-D10B-494B-A133-16CB58C52E05}{1}{B0}" name="Move subtree down" dateTime="2026-09-08T18:00:49.000Z" lastModifiedTime="2026-09-08T18:02:47.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{E9ACB105-7670-4F3D-A1B2-4E0A90988DAA}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Move subtree down]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:02:47.000Z" objectID="{E9ACB105-7670-4F3D-A1B2-4E0A90988DAA}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="142.6107788085937" height="67.13858032226562"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:49.000Z" lastModifiedTime="2026-09-08T18:02:46.000Z" objectID="{E9ACB105-7670-4F3D-A1B2-4E0A90988DAA}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anchor]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:02:46.000Z" objectID="{E9ACB105-7670-4F3D-A1B2-4E0A90988DAA}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:49.000Z" lastModifiedTime="2026-09-08T18:02:46.000Z" objectID="{E9ACB105-7670-4F3D-A1B2-4E0A90988DAA}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:02:46.000Z" objectID="{E9ACB105-7670-4F3D-A1B2-4E0A90988DAA}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
5style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:02:46.000Z" objectID="{E9ACB105-7670-4F3D-A1B2-4E0A90988DAA}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:02:46.000Z" objectID="{E9ACB105-7670-4F3D-A1B2-4E0A90988DAA}{70}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:02:46.000Z" objectID="{E9ACB105-7670-4F3D-A1B2-4E0A90988DAA}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/outline-edit/reserved-width/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="{AAFD8EE5-BFC0-4113-B6A0-D755D586AE00}{1}{B0}" name="Delete only paragraph" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:03:05.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-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:03:04.000Z" objectID="{C65E6873-A733-4C12-AED8-34292ADBABDE}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Delete only paragraph]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:03:04.000Z" objectID="{C65E6873-A733-4C12-AED8-34292ADBABDE}{49}{B0}"><one:Position x="480.0" y="108.0" z="0"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:03:04.000Z" objectID="{C65E6873-A733-4C12-AED8-34292ADBABDE}{50}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/outline-edit/reserved-width/cold/read/page-011.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="{B910C67F-763C-4368-9811-4FB7FEC2D6EA}{1}{B0}" name="Move leaf down" dateTime="2026-09-08T18:00:47.000Z" lastModifiedTime="2026-09-08T18:02:45.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:49.000Z" lastModifiedTime="2026-09-08T18:00:49.000Z" objectID="{0D0A7571-B969-4928-97DF-1A25AD308DBC}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Move leaf down]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:02:45.000Z" objectID="{0D0A7571-B969-4928-97DF-1A25AD308DBC}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="129.6621246337891" height="40.28315734863281"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:49.000Z" lastModifiedTime="2026-09-08T18:00:49.000Z" objectID="{0D0A7571-B969-4928-97DF-1A25AD308DBC}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anchor]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:49.000Z" lastModifiedTime="2026-09-08T18:00:49.000Z" objectID="{0D0A7571-B969-4928-97DF-1A25AD308DBC}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:48.000Z" lastModifiedTime="2026-09-08T18:00:49.000Z" objectID="{0D0A7571-B969-4928-97DF-1A25AD308DBC}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{0D0A7571-B969-4928-97DF-1A25AD308DBC}{59}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:49.000Z" lastModifiedTime="2026-09-08T18:00:49.000Z" objectID="{0D0A7571-B969-4928-97DF-1A25AD308DBC}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/outline-edit/reserved-width/cold/read/page-012.xml created+5
......@@ -0,0 +1,5 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{C374B166-BA48-44EA-BD5A-4DBD5B576FAE}{1}{B0}" name="Resize outline" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:41:01.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{0AB5D1BE-1AEC-4E18-8E28-5E722B2BC2EC}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Resize outline]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:03:12.000Z" objectID="{0AB5D1BE-1AEC-4E18-8E28-5E722B2BC2EC}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="144.0" height="67.13858032226562" isSetByUser="true"/><one:OEChildren><one:OE creationTime="2026-09-08T18:03:12.000Z" lastModifiedTime="2026-09-08T18:03:12.000Z" objectID="{0AB5D1BE-1AEC-4E18-8E28-5E722B2BC2EC}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anchor]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:03:12.000Z" objectID="{0AB5D1BE-1AEC-4E18-8E28-5E722B2BC2EC}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:03:12.000Z" lastModifiedTime="2026-09-08T18:03:12.000Z" objectID="{0AB5D1BE-1AEC-4E18-8E28-5E722B2BC2EC}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
5style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:03:12.000Z" lastModifiedTime="2026-09-08T18:03:12.000Z" objectID="{0AB5D1BE-1AEC-4E18-8E28-5E722B2BC2EC}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE><one:OE creationTime="2026-09-08T18:03:12.000Z" lastModifiedTime="2026-09-08T18:03:12.000Z" objectID="{0AB5D1BE-1AEC-4E18-8E28-5E722B2BC2EC}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{0AB5D1BE-1AEC-4E18-8E28-5E722B2BC2EC}{70}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{0AB5D1BE-1AEC-4E18-8E28-5E722B2BC2EC}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/outline-edit/reserved-width/cold/read/page-013.xml created+5
......@@ -0,0 +1,5 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{F1BE0054-CB23-4B19-BF34-E67C360281B4}{1}{B0}" name="Collapse subtree" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:41:00.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{7D437D96-E14F-40FE-BF53-7178AFC803D3}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Collapse subtree]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:02:56.000Z" objectID="{7D437D96-E14F-40FE-BF53-7178AFC803D3}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="129.6621246337891" height="40.28315734863281"/><one:OEChildren><one:OE creationTime="2026-09-08T18:02:56.000Z" lastModifiedTime="2026-09-08T18:02:56.000Z" objectID="{7D437D96-E14F-40FE-BF53-7178AFC803D3}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anchor]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:02:56.000Z" collapsed="1" objectID="{7D437D96-E14F-40FE-BF53-7178AFC803D3}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:02:56.000Z" lastModifiedTime="2026-09-08T18:02:56.000Z" objectID="{7D437D96-E14F-40FE-BF53-7178AFC803D3}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
5style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:02:56.000Z" lastModifiedTime="2026-09-08T18:02:56.000Z" objectID="{7D437D96-E14F-40FE-BF53-7178AFC803D3}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE><one:OE creationTime="2026-09-08T18:02:56.000Z" lastModifiedTime="2026-09-08T18:02:56.000Z" objectID="{7D437D96-E14F-40FE-BF53-7178AFC803D3}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{7D437D96-E14F-40FE-BF53-7178AFC803D3}{70}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{7D437D96-E14F-40FE-BF53-7178AFC803D3}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/outline-edit/reserved-width/cold/read/page-014.xml created+5
......@@ -0,0 +1,5 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{FDB5BC28-E89E-49DE-A1D4-D37631AEAD11}{1}{B0}" name="Automatic outline size" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:41:01.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{C000EB5C-52C9-4D85-9171-5A4E4EB380CB}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Automatic outline size]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:03:15.000Z" objectID="{C000EB5C-52C9-4D85-9171-5A4E4EB380CB}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="142.6107788085937" height="67.13858032226562"/><one:OEChildren><one:OE creationTime="2026-09-08T18:03:15.000Z" lastModifiedTime="2026-09-08T18:03:15.000Z" objectID="{C000EB5C-52C9-4D85-9171-5A4E4EB380CB}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anchor]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:03:15.000Z" objectID="{C000EB5C-52C9-4D85-9171-5A4E4EB380CB}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:03:15.000Z" lastModifiedTime="2026-09-08T18:03:15.000Z" objectID="{C000EB5C-52C9-4D85-9171-5A4E4EB380CB}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
5style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:03:15.000Z" lastModifiedTime="2026-09-08T18:03:15.000Z" objectID="{C000EB5C-52C9-4D85-9171-5A4E4EB380CB}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE><one:OE creationTime="2026-09-08T18:03:15.000Z" lastModifiedTime="2026-09-08T18:03:15.000Z" objectID="{C000EB5C-52C9-4D85-9171-5A4E4EB380CB}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{C000EB5C-52C9-4D85-9171-5A4E4EB380CB}{70}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{C000EB5C-52C9-4D85-9171-5A4E4EB380CB}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/outline-edit/reserved-width/cold/read/payloads.json created+1
......@@ -0,0 +1 @@
1../../../../paragraph-edit/before/read/payloads.json
\ No newline at end of file
corpus/outline-edit/reserved-width/cold/run.json created+18
......@@ -0,0 +1,18 @@
1{
2 "notebook": "/Users/clo/dev/one/evidence/m10/outline-reserved-candidate-01",
3 "expected_pages": 15,
4 "author": null,
5 "author_timeout_seconds": 600,
6 "inspect": false,
7 "collect_notebook": true,
8 "base": {
9 "file": "win7-office-base.qcow2",
10 "format": "qcow2",
11 "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346",
12 "virtual_size": 68719476736
13 },
14 "scripts": {
15 "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331",
16 "read.ps1": "04013bfcccee40a17e2a225f9b9e96f40a3a8daad9e350609654f8eda3ccbb41"
17 }
18}
corpus/outline-edit/reserved-width/cold/scripts/cold.ps1 created+1
......@@ -0,0 +1 @@
1../../../../paragraph-edit/reconciliation/keyboard/scripts/cold.ps1
\ No newline at end of file
corpus/outline-edit/reserved-width/cold/scripts/read.ps1 created+1
......@@ -0,0 +1 @@
1../../../../paragraph-edit/reconciliation/keyboard/scripts/read.ps1
\ No newline at end of file
corpus/outline-edit/reserved-width/cold/source.json created+8
......@@ -0,0 +1,8 @@
1[
2 {
3 "path": "synthetic.one",
4 "bytes": 134960,
5 "sha256": "824e9b8a1a521750417197047497f2f1c3dc4cbcb19269fb573da42a26174689",
6 "mtime_ns": 1788892773150136296
7 }
8]
corpus/outline-edit/reserved-width/cold/teardown.json created+1
......@@ -0,0 +1 @@
1{"absent": true}
crates/onestore/README.md+6
......@@ -52,6 +52,7 @@ harness also accepts `--client-profile release`.
5252| `ParagraphSplit`, `PreparedEdit::split` | Split ordinary text at a UTF-16 scalar boundary, retaining the original left identities and moving children to the right |
5353| `ParagraphJoin`, `PreparedEdit::join` | Join adjacent ordinary text while preserving inherited character styles and native text-identity rules |
5454| `TextAttribute`, `PreparedEdit::format` | Change character formatting over a UTF-16 range while sharing immutable styles; preserve unselected runs |
55| `OutlineEdit`, `PreparedEdit::outline` | Change ordinary outline position/width or a paragraph's saved expansion default, preserving identities and content |
5556| `PreparedEdit::commit`, `PreparedEdit::commit_file` | Publish the exact prepared image under caller-held exclusion or the conservative filesystem adapter |
5657| `read_file` | Read a snapshot under whole-file exclusion |
5758| `read_snapshot` | Read a validated snapshot through fresh positioned I/O while the caller excludes maintenance |
......@@ -79,6 +80,11 @@ accepts one `0..0` span for subsequent typing. Retain the `Insertion` value for
7980value creates different object identities. Duplicate insertion identities require
8081reconciliation. Formatting accepts explicit attributes, preserves inherited values,
8182and gives retired immutable styles zero current references while retaining history.
83Outline layout edits use points. Width is at least 36 points; an explicit user width
84and an automatic maximum-width hint remain distinct. Native layout generates the
85rendered height. Saved paragraph collapse defaults can be overridden by the native
86client's cached view. [Native layout captures](../../corpus/outline-edit/README.md)
87verify these edits through a fresh OneNote cache, including fields and nested content.
8288Paragraph splits preserve character formatting, retain tags on the left, and clone
8389mutable list objects without restarting numbering. The new right paragraph/text
8490identities belong to the retained `ParagraphSplit` intent. Its publication includes
crates/onestore/src/commit.rs+13
......@@ -183,6 +183,19 @@ pub struct PreparedEdit<'a> {
183183}
184184
185185impl<'a> PreparedEdit<'a> {
186 /// Changes outline geometry or a paragraph's saved expansion state, preserving content.
187 pub fn outline(
188 source: &'a [u8],
189 space: ExGuid,
190 object: ExGuid,
191 edit: crate::OutlineEdit,
192 ) -> Result<Self, crate::Error> {
193 Ok(Self {
194 source,
195 written: edit.apply(source, space, object)?,
196 })
197 }
198
186199 /// Joins adjacent ordinary paragraphs with native left-tag and text-identity semantics.
187200 pub fn join(
188201 source: &'a [u8],
crates/onestore/src/document.rs+3
......@@ -66,6 +66,8 @@ pub struct Layout {
6666 pub x: Option<f32>,
6767 pub y: Option<f32>,
6868 pub max_width: Option<f32>,
69 /// An explicit user width when true; false or absent leaves an automatic layout hint.
70 pub width_set_by_user: Option<bool>,
6971 pub max_height: Option<f32>,
7072}
7173
......@@ -822,6 +824,7 @@ impl<'a> Element<'a> {
822824 x: f.float(0x14001c14, 36.0)?,
823825 y: f.float(0x14001c15, 36.0)?,
824826 max_width: f.float(0x14001c1b, 36.0)?,
827 width_set_by_user: f.boolean(0x08001cbd)?,
825828 max_height: f.float(0x14001c1c, 36.0)?,
826829 };
827830 let format = Format {
crates/onestore/src/lib.rs+2
......@@ -11,6 +11,7 @@ mod flush;
1111mod formatting;
1212mod insertion;
1313mod objects;
14mod outline;
1415mod paragraph;
1516mod properties;
1617#[cfg(feature = "protected")]
......@@ -32,6 +33,7 @@ pub use files::FileDataReference;
3233pub use formatting::TextAttribute;
3334pub use insertion::Insertion;
3435pub use objects::{Object, ObjectData, ObjectReferences, ResolvedRevision};
36pub use outline::OutlineEdit;
3537pub use paragraph::{ParagraphJoin, ParagraphSplit};
3638pub use properties::{IdStream, Property, PropertySets, Value};
3739pub use revisions::{ExGuid, ObjectSpace, Revision, RevisionIndex};
crates/onestore/src/outline.rs created+197
......@@ -0,0 +1,197 @@
1use crate::{
2 Error, ExGuid, RevisionIndex, Store,
3 create::current_timestamps,
4 document::{Document, Kind},
5 edit::editable_parents,
6 write::{PropertyObject, write_revision},
7};
8use serde::{Deserialize, Serialize};
9use std::collections::{BTreeMap, BTreeSet};
10
11/// A layout or saved expansion change that preserves content and object identities.
12#[derive(Debug, Clone, Copy, PartialEq, Serialize, Deserialize)]
13#[serde(deny_unknown_fields)]
14pub enum OutlineEdit {
15 /// Moves an ordinary page outline to coordinates measured in points.
16 Position { x: f32, y: f32 },
17 /// Changes an ordinary outline's maximum width in points, at least 36.
18 /// `user_set` distinguishes an explicit width from an automatic layout hint.
19 /// Height remains content-derived; any previous reserved wrapping width is cleared.
20 Width { points: f32, user_set: bool },
21 /// Sets a paragraph's saved expansion default; native cache-local UI state can override it.
22 Collapsed(bool),
23}
24
25impl OutlineEdit {
26 pub(crate) fn apply(
27 self,
28 source: &[u8],
29 space: ExGuid,
30 object: ExGuid,
31 ) -> Result<Vec<u8>, Error> {
32 let invalid = |message| Error { offset: 0, message };
33 let values = match self {
34 Self::Position { x, y } => {
35 if !x.is_finite() || !y.is_finite() {
36 return Err(invalid("Outline coordinates must be finite"));
37 }
38 vec![
39 (0x14001c14, (x / 36.0).to_le_bytes().to_vec()),
40 (0x14001c15, (y / 36.0).to_le_bytes().to_vec()),
41 ]
42 }
43 Self::Width { points, user_set } => {
44 if !points.is_finite() || points < 36.0 {
45 return Err(invalid(
46 "Outline width must be finite and at least 36 points",
47 ));
48 }
49 vec![
50 (0x14001c1b, (points / 36.0).to_le_bytes().to_vec()),
51 (0x08001cbd | (u32::from(user_set) << 31), Vec::new()),
52 ]
53 }
54 Self::Collapsed(value) => vec![(0x0c001c11, vec![u8::from(value)])],
55 };
56 let store = Store::parse(source)?;
57 let index = RevisionIndex::parse(&store)?;
58 index.validate_current()?;
59 let document = Document::parse(&index)?;
60 let pages: Vec<_> = document
61 .pages()?
62 .into_iter()
63 .filter_map(|(sid, page)| (sid == space).then_some(page))
64 .collect();
65 let [page] = pages.as_slice() else {
66 return Err(invalid("Outline editing requires a single active page"));
67 };
68 let semantic = &document.spaces[&space];
69 let view = &semantic.revisions[&semantic.contexts[&ExGuid::default()]];
70 let parents = editable_parents(view, &pages, object)?;
71 let node = &view.nodes[&object];
72 match self {
73 Self::Collapsed(_) => {
74 if !matches!(node.kind, Kind::Paragraph { .. }) {
75 return Err(invalid("Select a paragraph for its saved expansion state"));
76 }
77 }
78 _ => {
79 if !matches!(node.kind, Kind::Outline { .. })
80 || parents.get(&object).map(Vec::as_slice) != Some(pages.as_slice())
81 || !view.nodes[page].children.contains(&object)
82 {
83 return Err(invalid("Select an ordinary outline directly on the page"));
84 }
85 }
86 }
87 let mut ancestors = BTreeSet::new();
88 let mut pending = vec![object];
89 while let Some(id) = pending.pop() {
90 if !ancestors.insert(id) {
91 return Err(invalid("Outline ancestry contains a cycle"));
92 }
93 if id != *page && parents.get(&id).is_none_or(|parents| parents.len() != 1) {
94 return Err(invalid("Outline content must have one active parent"));
95 }
96 if matches!(view.nodes[&id].kind, Kind::Title)
97 || view.nodes[&id].extra[0]
98 .iter()
99 .any(|field| matches!(field.id, 0x88001cb4 | 0x88001cf9 | 0x88001cb2))
100 {
101 return Err(invalid(
102 "Title or protected outline content cannot be changed here",
103 ));
104 }
105 pending.extend(parents.get(&id).into_iter().flatten().copied());
106 }
107 let modified = current_timestamps()?.0.to_le_bytes();
108 write_revision(source, space, |raw| {
109 let mut target = PropertyObject::from_object(&raw.objects[&object])?;
110 target.set(
111 &values
112 .iter()
113 .map(|(id, data)| (*id, data.as_slice()))
114 .collect::<Vec<_>>(),
115 )?;
116 if matches!(self, Self::Width { .. }) {
117 target.remove(&[0x14001cdb])?;
118 }
119 if raw.objects[&object].data == crate::ObjectData::Properties(&target.bytes) {
120 return Ok(BTreeMap::new());
121 }
122 target.set(&[(0x14001d7a, &modified)])?;
123 let mut changed = BTreeMap::from([(object, target)]);
124 for id in ancestors {
125 if id != object {
126 let mut ancestor = PropertyObject::from_object(&raw.objects[&id])?;
127 ancestor.set(&[(0x14001d7a, &modified)])?;
128 changed.insert(id, ancestor);
129 }
130 }
131 Ok(changed)
132 })
133 }
134}
135
136#[cfg(test)]
137mod tests {
138 use super::*;
139
140 #[test]
141 fn protection_on_the_target_or_ancestor_prevents_layout_edits() {
142 let source = crate::create_section("layout.one", "Text", "Author").unwrap();
143 let store = Store::parse(&source).unwrap();
144 let index = RevisionIndex::parse(&store).unwrap();
145 let document = Document::parse(&index).unwrap();
146 let (sid, page) = document.pages().unwrap()[0];
147 let space = &document.spaces[&sid];
148 let view = &space.revisions[&space.contexts[&ExGuid::default()]];
149 let outline = *view.nodes[&page]
150 .children
151 .iter()
152 .find(|id| matches!(view.nodes[id].kind, Kind::Outline { .. }))
153 .unwrap();
154 let paragraph = view.nodes[&outline].children[0];
155 for target in [outline, page] {
156 for property in [0x08001cde, 0x08001cb4, 0x08001cf9, 0x08001cb2] {
157 for enabled in [false, true] {
158 let bytes = write_revision(&source, sid, |raw| {
159 let mut object = PropertyObject::from_object(&raw.objects[&target])?;
160 object.set(&[(property | (u32::from(enabled) << 31), &[])])?;
161 Ok(BTreeMap::from([(target, object)]))
162 })
163 .unwrap();
164 for (object, edit) in [
165 (outline, OutlineEdit::Position { x: 72.0, y: 72.0 }),
166 (
167 outline,
168 OutlineEdit::Width {
169 points: 144.0,
170 user_set: true,
171 },
172 ),
173 (paragraph, OutlineEdit::Collapsed(true)),
174 ] {
175 assert_eq!(
176 edit.apply(&bytes, sid, object).is_err(),
177 enabled,
178 "{target} {property:x} {edit:?}"
179 );
180 }
181 }
182 }
183 }
184 let duplicated = write_revision(&source, sid, |raw| {
185 let mut object = PropertyObject::from_object(&raw.objects[&outline])?;
186 let reference = object.reference(paragraph)?;
187 object.set(&[(0x24001c20, &reference.repeat(2))])?;
188 Ok(BTreeMap::from([(outline, object)]))
189 })
190 .unwrap();
191 assert!(
192 OutlineEdit::Collapsed(true)
193 .apply(&duplicated, sid, paragraph)
194 .is_err()
195 );
196 }
197}
crates/onestore/tests/outline.rs created+428
......@@ -0,0 +1,428 @@
1use onestore::{
2 ExGuid, OutlineEdit as Edit, PreparedEdit, RevisionIndex, Store,
3 document::{Document, Kind},
4};
5use std::collections::BTreeSet;
6
7#[path = "support/current.rs"]
8mod current;
9#[path = "support/disk.rs"]
10mod disk;
11
12const SOURCE: &[u8] = include_bytes!("../../../corpus/outline-edit/before/notebook/synthetic.one");
13
14fn cases(document: &Document<'_>) -> Vec<(String, ExGuid, ExGuid, Edit)> {
15 let mut cases = Vec::new();
16 for (sid, page) in document.pages().unwrap() {
17 let space = &document.spaces[&sid];
18 let view = &space.revisions[&space.contexts[&ExGuid::default()]];
19 let Kind::Metadata {
20 title: Some(name), ..
21 } = &view.nodes[&view.roots[&2]].kind
22 else {
23 panic!()
24 };
25 let edit = match name.as_str() {
26 "Move outline" => Edit::Position { x: 180.0, y: 216.0 },
27 "Resize outline" => Edit::Width {
28 points: 144.0,
29 user_set: true,
30 },
31 "Automatic outline size" => Edit::Width {
32 points: 360.0,
33 user_set: false,
34 },
35 "Collapse subtree" => Edit::Collapsed(true),
36 "Expand subtree" => Edit::Collapsed(false),
37 _ => continue,
38 };
39 let mut object = *view.nodes[&page]
40 .children
41 .iter()
42 .find(|id| matches!(view.nodes[id].kind, Kind::Outline { .. }))
43 .unwrap();
44 if matches!(edit, Edit::Collapsed(_)) {
45 object = *view.nodes[&object].children.iter().find(|id| {
46 view.nodes[id].content.first().is_some_and(|text| matches!(
47 &view.nodes[text].kind, Kind::RichText { text, .. } if text.starts_with("Target ")
48 ))
49 }).unwrap();
50 }
51 cases.push((name.clone(), sid, object, edit));
52 }
53 assert_eq!(cases.len(), 5);
54 cases
55}
56
57#[test]
58fn geometry_and_expansion_preserve_unrelated_properties_objects_and_history() {
59 let store = Store::parse(SOURCE).unwrap();
60 let index = RevisionIndex::parse(&store).unwrap();
61 let document = Document::parse(&index).unwrap();
62 for (name, sid, object, edit) in cases(&document) {
63 let restored = serde_json::from_value(serde_json::to_value(edit).unwrap()).unwrap();
64 assert_eq!(edit, restored);
65 let prepared = PreparedEdit::outline(SOURCE, sid, object, restored).unwrap();
66 let after_store = Store::parse(prepared.as_bytes()).unwrap();
67 assert!(after_store.checksum_mismatches.is_empty());
68 let after_index = RevisionIndex::parse(&after_store).unwrap();
69 after_index.validate_current().unwrap();
70 let after_document = Document::parse(&after_index).unwrap();
71 let space = &document.spaces[&sid];
72 let before = &space.revisions[&space.contexts[&ExGuid::default()]];
73 let space = &after_document.spaces[&sid];
74 let after = &space.revisions[&space.contexts[&ExGuid::default()]];
75 let mut changed = BTreeSet::from([before.roots[&2]]);
76 let mut pending = vec![object];
77 while let Some(id) = pending.pop() {
78 if !changed.insert(id) {
79 continue;
80 }
81 pending.extend(before.nodes.iter().filter_map(|(parent, node)| {
82 node.children
83 .iter()
84 .chain(&node.content)
85 .chain(&node.structure)
86 .any(|child| *child == id)
87 .then_some(*parent)
88 }));
89 }
90 assert_eq!(
91 before.nodes.keys().collect::<Vec<_>>(),
92 after.nodes.keys().collect::<Vec<_>>()
93 );
94 for (id, node) in &before.nodes {
95 let mut expected = serde_json::to_value(node).unwrap();
96 let actual = serde_json::to_value(&after.nodes[id]).unwrap();
97 if changed.contains(id) {
98 expected["modified"] = actual["modified"].clone();
99 }
100 if *id == object {
101 match edit {
102 Edit::Position { x, y } => {
103 expected["layout"]["x"] = x.into();
104 expected["layout"]["y"] = y.into();
105 }
106 Edit::Width { points, user_set } => {
107 expected["layout"]["max_width"] = points.into();
108 expected["layout"]["width_set_by_user"] = user_set.into();
109 let fields = expected["extra"][0].as_array_mut().unwrap();
110 fields.retain(|field| field["id"].as_u64() != Some(0x14001cdb));
111 }
112 Edit::Collapsed(value) => {
113 expected["kind"]["collapse_state"] = u8::from(value).into()
114 }
115 }
116 }
117 let mut actual = actual;
118 // Property order is not semantic; every property and nested value still compares exactly.
119 expected["extra"][0]
120 .as_array_mut()
121 .unwrap()
122 .sort_by_key(|field| field["id"].as_u64().unwrap());
123 actual["extra"][0]
124 .as_array_mut()
125 .unwrap()
126 .sort_by_key(|field| field["id"].as_u64().unwrap());
127 assert_eq!(actual, expected, "{name}: {id}");
128 }
129 for (space_id, old_space) in &index.spaces {
130 for revision in old_space.revisions.keys() {
131 let old = index.resolve(*space_id, *revision).unwrap();
132 let retained = after_index.resolve(*space_id, *revision).unwrap();
133 assert_eq!(old.roots, retained.roots);
134 for (id, value) in old.objects {
135 assert_eq!(value.data, retained.objects[&id].data);
136 }
137 }
138 if *space_id != sid {
139 assert_eq!(old_space.labels, after_index.spaces[space_id].labels);
140 }
141 }
142 let again = PreparedEdit::outline(prepared.as_bytes(), sid, object, edit).unwrap();
143 assert_eq!(again.as_bytes(), prepared.as_bytes());
144 }
145}
146
147#[test]
148fn invalid_geometry_and_non_outline_targets_are_rejected() {
149 let store = Store::parse(SOURCE).unwrap();
150 let index = RevisionIndex::parse(&store).unwrap();
151 let document = Document::parse(&index).unwrap();
152 for (_, sid, object, _) in cases(&document) {
153 for value in [f32::NAN, f32::INFINITY, f32::NEG_INFINITY] {
154 for edit in [
155 Edit::Position { x: value, y: 0.0 },
156 Edit::Position { x: 0.0, y: value },
157 Edit::Width {
158 points: value,
159 user_set: true,
160 },
161 ] {
162 assert!(PreparedEdit::outline(SOURCE, sid, object, edit).is_err());
163 }
164 }
165 for points in [-1.0, 0.0, 35.999] {
166 assert!(
167 PreparedEdit::outline(
168 SOURCE,
169 sid,
170 object,
171 Edit::Width {
172 points,
173 user_set: false
174 }
175 )
176 .is_err()
177 );
178 }
179 let space = &document.spaces[&sid];
180 let view = &space.revisions[&space.contexts[&ExGuid::default()]];
181 for (id, node) in &view.nodes {
182 if !matches!(node.kind, Kind::Outline { .. }) {
183 assert!(
184 PreparedEdit::outline(SOURCE, sid, *id, Edit::Position { x: 72.0, y: 72.0 })
185 .is_err()
186 );
187 }
188 if matches!(node.kind, Kind::Title) {
189 let mut descendants = node.children.clone();
190 while let Some(child) = descendants.pop() {
191 descendants.extend(&view.nodes[&child].children);
192 for edit in [
193 Edit::Position { x: 72.0, y: 72.0 },
194 Edit::Width {
195 points: 144.0,
196 user_set: true,
197 },
198 Edit::Collapsed(true),
199 ] {
200 assert!(PreparedEdit::outline(SOURCE, sid, child, edit).is_err());
201 }
202 }
203 }
204 if !matches!(node.kind, Kind::Paragraph { .. }) {
205 assert!(PreparedEdit::outline(SOURCE, sid, *id, Edit::Collapsed(true)).is_err());
206 }
207 }
208 assert!(
209 PreparedEdit::outline(SOURCE, ExGuid::default(), object, Edit::Collapsed(true))
210 .is_err()
211 );
212 assert!(
213 PreparedEdit::outline(SOURCE, sid, ExGuid::default(), Edit::Collapsed(true)).is_err()
214 );
215 }
216}
217
218#[test]
219fn resizing_a_native_reserved_width_preserves_content() {
220 let source = include_bytes!("../../../corpus/outline-edit/after/notebook/synthetic.one");
221 let store = Store::parse(source).unwrap();
222 let index = RevisionIndex::parse(&store).unwrap();
223 let document = Document::parse(&index).unwrap();
224 let (_, sid, object, _) = cases(&document)
225 .into_iter()
226 .find(|(name, ..)| name == "Move outline")
227 .unwrap();
228 let space = &document.spaces[&sid];
229 let before = &space.revisions[&space.contexts[&ExGuid::default()]];
230 assert!(
231 before.nodes[&object].extra[0]
232 .iter()
233 .any(|p| p.id == 0x14001cdb)
234 );
235 let edit = PreparedEdit::outline(
236 source,
237 sid,
238 object,
239 Edit::Width {
240 points: 144.0,
241 user_set: true,
242 },
243 )
244 .unwrap();
245 let after_store = Store::parse(edit.as_bytes()).unwrap();
246 let after_index = RevisionIndex::parse(&after_store).unwrap();
247 let after_document = Document::parse(&after_index).unwrap();
248 let space = &after_document.spaces[&sid];
249 let after = &space.revisions[&space.contexts[&ExGuid::default()]];
250 assert!(
251 !after.nodes[&object].extra[0]
252 .iter()
253 .any(|p| p.id == 0x14001cdb)
254 );
255 assert_eq!(after.nodes[&object].layout.max_width, Some(144.0));
256 for (id, node) in &before.nodes {
257 assert_eq!(node.children, after.nodes[id].children);
258 assert_eq!(node.content, after.nodes[id].content);
259 if matches!(node.kind, Kind::RichText { .. }) {
260 assert_eq!(
261 serde_json::to_value(node).unwrap(),
262 serde_json::to_value(&after.nodes[id]).unwrap()
263 );
264 }
265 }
266 if let Some(output) = std::env::var_os("ONESTORE_RESERVED_WIDTH_OUTPUT") {
267 let output = std::path::PathBuf::from(output);
268 assert!(output.is_absolute());
269 std::fs::create_dir(&output).unwrap();
270 std::fs::write(output.join("synthetic.one"), edit.as_bytes()).unwrap();
271 }
272}
273
274#[test]
275fn outline_publication_interruptions_reopen_as_complete_old_or_new_layout() {
276 let source = onestore::create_section("layout.one", "Before 🦀 after", "Author").unwrap();
277 let store = Store::parse(&source).unwrap();
278 let index = RevisionIndex::parse(&store).unwrap();
279 let document = Document::parse(&index).unwrap();
280 let (sid, page) = document.pages().unwrap()[0];
281 let space = &document.spaces[&sid];
282 let view = &space.revisions[&space.contexts[&ExGuid::default()]];
283 let outline = *view.nodes[&page]
284 .children
285 .iter()
286 .find(|id| matches!(view.nodes[id].kind, Kind::Outline { .. }))
287 .unwrap();
288 let paragraph = view.nodes[&outline].children[0];
289 for (object, operation) in [
290 (outline, Edit::Position { x: 216.0, y: 72.0 }),
291 (
292 outline,
293 Edit::Width {
294 points: 144.0,
295 user_set: true,
296 },
297 ),
298 (paragraph, Edit::Collapsed(true)),
299 ] {
300 let edit = PreparedEdit::outline(&source, sid, object, operation).unwrap();
301 let before = current::current(&source);
302 let after = current::current(edit.as_bytes());
303 for write_limit in [17, 4096] {
304 let disk = |fail_at| disk::Disk {
305 visible: source.clone(),
306 durable: source.clone(),
307 operation: 0,
308 fail_at,
309 write_limit,
310 random: 1927,
311 };
312 let mut success = disk(None);
313 edit.commit(&mut success).unwrap();
314 assert_eq!(success.durable, edit.as_bytes());
315 for at in 1..=success.operation {
316 let mut interrupted = disk(Some(at));
317 let failure = edit.commit(&mut interrupted).unwrap_err();
318 let actual = current::current(&interrupted.durable);
319 assert!(
320 actual == before || actual == after,
321 "{operation:?} operation {at}"
322 );
323 if failure.state == onestore::CommitState::NotCommitted {
324 assert_eq!(actual, before);
325 }
326 }
327 }
328 }
329}
330
331#[test]
332fn repeated_geometry_changes_and_expansion_match_an_independent_model() {
333 let original = onestore::create_section("layout.one", "Before 🦀 é\rafter", "Author").unwrap();
334 let store = Store::parse(&original).unwrap();
335 let index = RevisionIndex::parse(&store).unwrap();
336 let document = Document::parse(&index).unwrap();
337 let (sid, page) = document.pages().unwrap()[0];
338 let space = &document.spaces[&sid];
339 let view = &space.revisions[&space.contexts[&ExGuid::default()]];
340 let outline = *view.nodes[&page]
341 .children
342 .iter()
343 .find(|id| matches!(view.nodes[id].kind, Kind::Outline { .. }))
344 .unwrap();
345 let paragraph = view.nodes[&outline].children[0];
346 let text = view.nodes[&paragraph].content[0];
347 for seed in 1..=16_u64 {
348 let mut rng = seed;
349 let mut source = original.clone();
350 let mut layout = serde_json::to_value(&view.nodes[&outline].layout).unwrap();
351 let mut collapsed = None;
352 for step in 0..48 {
353 rng ^= rng << 13;
354 rng ^= rng >> 7;
355 rng ^= rng << 17;
356 let (object, edit) = match step % 3 {
357 0 => {
358 let x = ((rng % 400) as f32 - 100.0) * 18.0;
359 let y = ((rng % 217) as f32 - 60.0) * 18.0;
360 layout["x"] = x.into();
361 layout["y"] = y.into();
362 (outline, Edit::Position { x, y })
363 }
364 1 => {
365 let points = (2 + rng % 86) as f32 * 18.0;
366 layout["max_width"] = points.into();
367 layout["width_set_by_user"] = (rng & 1 != 0).into();
368 (
369 outline,
370 Edit::Width {
371 points,
372 user_set: rng & 1 != 0,
373 },
374 )
375 }
376 _ => {
377 collapsed = Some(u8::from(rng & 1 != 0));
378 (paragraph, Edit::Collapsed(rng & 1 != 0))
379 }
380 };
381 source = PreparedEdit::outline(&source, sid, object, edit)
382 .unwrap()
383 .as_bytes()
384 .to_vec();
385 let store = Store::parse(&source).unwrap();
386 let index = RevisionIndex::parse(&store).unwrap();
387 index.validate_current().unwrap();
388 let document = Document::parse(&index).unwrap();
389 let space = &document.spaces[&sid];
390 let current = &space.revisions[&space.contexts[&ExGuid::default()]];
391 assert_eq!(
392 serde_json::to_value(&current.nodes[&outline].layout).unwrap(),
393 layout
394 );
395 let Kind::Paragraph { collapse_state, .. } = &current.nodes[&paragraph].kind else {
396 panic!()
397 };
398 assert_eq!(*collapse_state, collapsed);
399 assert_eq!(
400 current.nodes[&outline].children,
401 view.nodes[&outline].children
402 );
403 assert_eq!(
404 serde_json::to_value(&current.nodes[&text]).unwrap(),
405 serde_json::to_value(&view.nodes[&text]).unwrap()
406 );
407 }
408 }
409}
410
411#[test]
412#[ignore = "exports public-API outline candidates for cold native validation"]
413fn export_native_outline_candidates() {
414 let output = std::path::PathBuf::from(std::env::var_os("ONESTORE_OUTLINE_OUTPUT").unwrap());
415 assert!(output.is_absolute());
416 std::fs::create_dir(&output).unwrap();
417 let store = Store::parse(SOURCE).unwrap();
418 let index = RevisionIndex::parse(&store).unwrap();
419 let document = Document::parse(&index).unwrap();
420 let mut bytes = SOURCE.to_vec();
421 for (_, sid, object, edit) in cases(&document) {
422 bytes = PreparedEdit::outline(&bytes, sid, object, edit)
423 .unwrap()
424 .as_bytes()
425 .to_vec();
426 }
427 std::fs::write(output.join("synthetic.one"), bytes).unwrap();
428}
fuzz/fuzz_targets/paragraph.rs+54-3
......@@ -1,8 +1,8 @@
11#![no_main]
22use libfuzzer_sys::fuzz_target;
33use onestore::{
4 CommitState, ExGuid, Insertion, ParagraphJoin, ParagraphSplit, PreparedEdit, RevisionIndex,
5 Store, TextAttribute as A,
4 CommitState, ExGuid, Insertion, OutlineEdit, ParagraphJoin, ParagraphSplit, PreparedEdit,
5 RevisionIndex, Store, TextAttribute as A,
66 document::{Document, Kind},
77};
88use std::sync::LazyLock;
......@@ -38,6 +38,11 @@ static SOURCE: LazyLock<(Vec<u8>, ExGuid, ExGuid)> = LazyLock::new(|| {
3838
3939fuzz_target!(|input: &[u8]| {
4040 let (source, sid, outline) = &*SOURCE;
41 if let Ok(operation) = serde_json::from_slice::<OutlineEdit>(input)
42 && let Ok(edit) = PreparedEdit::outline(source, *sid, *outline, operation)
43 {
44 current::current(edit.as_bytes());
45 }
4146 if let Ok(intent) = serde_json::from_slice::<ParagraphSplit>(input)
4247 && let Ok(edit) = PreparedEdit::split(source, *sid, &intent)
4348 {
......@@ -94,7 +99,41 @@ fuzz_target!(|input: &[u8]| {
9499 .collect();
95100 let mut expected_text = Vec::new();
96101 let mut expected_graph = Vec::new();
97 let edit = if step[1] & 8 != 0 && !pairs.is_empty() {
102 let mut expected_layout = None;
103 let mut expected_collapse = None;
104 let edit = if step[1] & 16 != 0 {
105 let mut layout = serde_json::to_value(&view.nodes[outline].layout).unwrap();
106 let (object, operation) = match (step[1] >> 5) % 3 {
107 0 => {
108 let x = (f32::from(step[2]) - 64.0) * 18.0;
109 let y = f32::from(step[3]) * 18.0;
110 layout["x"] = x.into();
111 layout["y"] = y.into();
112 (*outline, OutlineEdit::Position { x, y })
113 }
114 1 => {
115 let points = (2.0 + f32::from(step[2])) * 18.0;
116 let user_set = step[3] & 1 != 0;
117 layout["max_width"] = points.into();
118 layout["width_set_by_user"] = user_set.into();
119 (*outline, OutlineEdit::Width { points, user_set })
120 }
121 _ => {
122 let paragraph = paragraphs[usize::from(step[2]) % paragraphs.len()];
123 let collapsed = step[3] & 1 != 0;
124 expected_collapse = Some((paragraph, collapsed));
125 (paragraph, OutlineEdit::Collapsed(collapsed))
126 }
127 };
128 expected_layout = Some(layout);
129 for (id, node) in &view.nodes {
130 expected_graph.push((*id, node.children.clone(), node.content.clone()));
131 if matches!(node.kind, Kind::RichText { .. }) {
132 expected_text.push((*id, characters(view, *id)));
133 }
134 }
135 PreparedEdit::outline(source, *sid, object, operation).unwrap()
136 } else if step[1] & 8 != 0 && !pairs.is_empty() {
98137 let (parent, left, right) = pairs[usize::from(step[2]) % pairs.len()];
99138 let a = view.nodes[&left].content[0];
100139 let b = view.nodes[&right].content[0];
......@@ -148,6 +187,18 @@ fuzz_target!(|input: &[u8]| {
148187 let after_document = Document::parse(&after_index).unwrap();
149188 let space = &after_document.spaces[sid];
150189 let after_view = &space.revisions[&space.contexts[&ExGuid::default()]];
190 if let Some(expected) = expected_layout {
191 assert_eq!(
192 serde_json::to_value(&after_view.nodes[outline].layout).unwrap(),
193 expected
194 );
195 }
196 if let Some((id, expected)) = expected_collapse {
197 let Kind::Paragraph { collapse_state, .. } = after_view.nodes[&id].kind else {
198 panic!()
199 };
200 assert_eq!(collapse_state, Some(u8::from(expected)));
201 }
151202 for (id, expected) in expected_text {
152203 assert_eq!(characters(after_view, id), expected);
153204 }
tools/test_outline_edit.py+70-2
......@@ -17,6 +17,75 @@ compare = runpy.run_path(str(ROOT / 'tools/verify-document.py'))['compare']
1717
1818
1919class OutlineEditTest(unittest.TestCase):
20 def cold_layout(self, fixture):
21 models = {}
22 with TemporaryDirectory() as temporary:
23 for phase, notebook in [('candidate', fixture / 'candidate'), ('cold', fixture / 'cold/notebook')]:
24 folder = Path(temporary) / phase
25 shutil.copytree(fixture / 'cold/read', folder / 'read')
26 compare(notebook, folder / 'read')
27 subprocess.run([EXPORTER, notebook / 'synthetic.one', folder / 'model'], check=True)
28 model = json.loads((folder / 'model/document.json').read_text())
29 models[phase] = {r['nodes'][r['roots']['2']]['kind']['title']: (r, page)
30 for _, _, r, page in ordered_pages(model)}
31 captures = {page.get('name'): page for path in (fixture / 'cold/read').glob('page-*.xml')
32 for page in [ET.parse(path).getroot()]}
33 self.assertEqual(len(models['candidate']), 15)
34 self.assertEqual(models['candidate'].keys(), models['cold'].keys())
35 for name, (old, page) in models['candidate'].items():
36 new, saved_page = models['cold'][name]
37 self.assertEqual(page, saved_page)
38 for oid, node in walk(old, page):
39 actual = new['nodes'][oid]
40 for key in ('children', 'content', 'structure', 'child_level'):
41 self.assertEqual(actual[key], node[key], (name, oid, key))
42 self.assertEqual(actual['kind'].get('collapse_state'), node['kind'].get('collapse_state'))
43 if node['kind']['type'] == 'RichText':
44 self.assertEqual(actual['kind'], node['kind'])
45 return models, captures
46
47 def test_rust_layout_and_saved_expansion_survive_cold_native_reopen(self):
48 models, captures = self.cold_layout(FIXTURE / 'layout')
49 cases = json.loads((FIXTURE / 'cases.json').read_text(encoding='utf-8-sig'))
50 selected = [case for case in cases if any(key in case for key in ('position', 'size', 'collapse'))]
51 self.assertEqual(len(selected), 5)
52 for case in selected:
53 name = case['name']
54 old, page = models['candidate'][name]
55 saved, _ = models['cold'][name]
56 oid = next(oid for oid in old['nodes'][page]['children'] if old['nodes'][oid]['kind']['type'] == 'Outline')
57 node = saved['nodes'][oid]
58 z = old['nodes'][page]['children'].index(oid)
59 native = next(outline for outline in captures[name].findall('one:Outline', ns)
60 if int(outline.find('one:Position', ns).get('z')) == z)
61 for key, value in case.get('position', {}).items():
62 self.assertEqual(node['layout'][key], value)
63 if 'size' in case:
64 size = native.find('one:Size', ns)
65 self.assertEqual(node['layout']['max_width'], case['size']['width'])
66 self.assertEqual(size.get('isSetByUser') in ('true', '1'), case['size']['isSetByUser'])
67 if case['size']['isSetByUser']:
68 self.assertAlmostEqual(float(size.get('width')), case['size']['width'], places=3)
69 if 'collapse' in case:
70 target, = [p for p in native.findall('.//one:OE', ns) if p.find('one:T', ns) is not None
71 and ''.join(Text(p.find('one:T', ns).text or '').parts).startswith('Target ')]
72 self.assertEqual(target.get('collapsed') in ('true', '1'), case['collapse'])
73
74 def test_rust_width_replaces_native_reserved_wrap_width(self):
75 models, captures = self.cold_layout(FIXTURE / 'reserved-width')
76 saved, page = models['cold']['Move outline']
77 oid = next(oid for oid in saved['nodes'][page]['children'] if saved['nodes'][oid]['kind']['type'] == 'Outline')
78 node = saved['nodes'][oid]
79 self.assertEqual(node['layout']['max_width'], 144)
80 self.assertTrue(node['layout']['width_set_by_user'])
81 self.assertFalse(any(field['id'] == 0x14001cdb for field in node['extra'][0]))
82 z = saved['nodes'][page]['children'].index(oid)
83 native = next(outline for outline in captures['Move outline'].findall('one:Outline', ns)
84 if int(outline.find('one:Position', ns).get('z')) == z)
85 size = native.find('one:Size', ns)
86 self.assertEqual(size.get('isSetByUser'), 'true')
87 self.assertAlmostEqual(float(size.get('width')), 144, places=3)
88
2089 def preserved_node(self, old, new):
2190 expected = dict(old)
2291 if old['modified'] != new['modified']:
......@@ -101,8 +170,7 @@ class OutlineEditTest(unittest.TestCase):
101170 self.assertEqual(geometry[key], value)
102171 if 'size' in case:
103172 self.assertEqual(geometry['max_width'], case['size']['width'])
104 fields = {field['id'] for field in new['nodes'][outline]['extra'][0]}
105 self.assertEqual(0x88001cbd in fields, case['size']['isSetByUser'])
173 self.assertEqual(geometry['width_set_by_user'], case['size']['isSetByUser'])
106174 if 'collapse' in case:
107175 self.assertEqual(bool(new['nodes'][target]['kind']['collapse_state']), case['collapse'])
108176 node, = [node for node in captures[phase][name].findall('one:Outline//one:OE', ns)