| author | |
| committer | |
| log | 49bc9b2d95d93ceb9f25de3e238e89ce6fbfb21e |
| tree | d1a7020f27ecc5ceebf8cf1e7c8b2d3b316bb55c |
| parent | 3a32cbb2aad5a83965908734e6595ea252557f7f |
| signature | Signed by SSH key SHA256:52mNGHRsVFBDED9IAX5pe+LRWUefqTbxEReunq21QvU |
Add nonoverlapping UTF-16 styles to paragraph and outline insertion without a second revision or offline queue entry. Preserve intent identities through serialization, replay and placement review; reject malformed spans before source parsing.
Validate native cold reads, controlled reverse edits and direct keyboard editing, empty-style continuation, historical preservation, interrupted publication, old-cache compatibility, twelve-client mixed editing and offline recovery. Retain public native fixtures and stateful sanitizer coverage.
Assisted-by: gpt-6-astra140 files changed, 2765 insertions(+), 40 deletions(-)
corpus/formatted-insertion/README.md created+31| ... | ... | @@ -0,0 +1,31 @@ |
| 1 | # Atomic formatted insertions | |
| 2 | ||
| 3 | Synthetic Rust paragraph/outline insertions with independent OneNote 2010 cold | |
| 4 | reads. The native paragraph and table inputs descend from the public | |
| 5 | `native/20260905-05` corpus. `manifest.json` records stable intents and file hashes; | |
| 6 | each capture retains its native environment and run provenance. Attachment exports | |
| 7 | link to existing identical public payloads. | |
| 8 | ||
| 9 | Generate new candidates with the ignored `export_native_formatted_insertions` test | |
| 10 | and `ONESTORE_INSERT_OUTPUT` set to a new absolute directory. Each child directory | |
| 11 | is a separate notebook: the candidates can share source section identities. | |
| 12 | Use `tools/native_runner.py` with one child directory and `--expected-pages 1`. | |
| 13 | `tools/native/formatted-insertion.ps1` performs an unchanged native HTML round trip | |
| 14 | followed by a native prefix edit for the four nonempty cases. | |
| 15 | ||
| 16 | The unchanged round trip establishes native font substitution before checking the | |
| 17 | edit's exact character styles. Table updates omit the outline's measured `Size`: | |
| 18 | resubmitting it made two unlocked columns oscillate in native XML, including after | |
| 19 | a fresh cache reopen. Those unsettled captures are excluded. The retained table | |
| 20 | reverse capture omits that measurement; paragraph and ordinary outline captures | |
| 21 | retain it. | |
| 22 | ||
| 23 | `native-cell/ui` records a direct keyboard prefix edit, without HTML resubmission. | |
| 24 | Its native XML settles, preserves every prior character's style, and the resulting | |
| 25 | file passes the same model oracle. The capture includes the keyboard script and | |
| 26 | screenshot. | |
| 27 | ||
| 28 | COM omits the empty outline. Its cold-reopened file retains the empty rich-text | |
| 29 | object and style; `empty/typed-after-cold` adds text to that retained object and | |
| 30 | verifies the 18-point italic result in another independent native cold read. | |
| 31 | `tools/test_formatted_insertion.py` checks these captures without a live VM. |
corpus/formatted-insertion/empty-typed/candidate/synthetic.one created| Binary files /dev/null and b/corpus/formatted-insertion/empty-typed/candidate/synthetic.one differ |
corpus/formatted-insertion/empty-typed/cold/notebook/synthetic.one created| Binary files /dev/null and b/corpus/formatted-insertion/empty-typed/cold/notebook/synthetic.one differ |
corpus/formatted-insertion/empty-typed/cold/read/environment.json created+7| ... | ... | @@ -0,0 +1,7 @@ |
| 1 | { | |
| 2 | "powershell": "5.1.14409.1005", | |
| 3 | "schema": "xs2010", | |
| 4 | "hostname": "ONE-M6-7135C1A2", | |
| 5 | "cold": true, | |
| 6 | "onenote": "14.0.4763.1000" | |
| 7 | } |
corpus/formatted-insertion/empty-typed/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="{B38138D7-F157-4B10-8B91-349F1179632C}{1}{B0}" path="C:\one-tests\runs\capture\notebook" lastModifiedTime="2026-09-08T04:49:19.000Z" color="#B49EDE"><one:Section name="synthetic" ID="{A42E0040-CACE-0692-3494-76901850CE52}{1}{B0}" path="C:\one-tests\runs\capture\notebook\synthetic.one" lastModifiedTime="2026-09-08T04:49:19.000Z" color="#8AA8E4"><one:Page ID="{7D48D92B-74D0-0597-050C-7AF738E2B7E0}{1}{B0}" name="Original" dateTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T04:49:19.000Z" pageLevel="1"/></one:Section></one:Notebook> |
corpus/formatted-insertion/empty-typed/cold/read/page-000.xml created+3| ... | ... | @@ -0,0 +1,3 @@ |
| 1 | <?xml version="1.0"?> | |
| 2 | <one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{7D48D92B-74D0-0597-050C-7AF738E2B7E0}{1}{B0}" name="Original" dateTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T04:49:19.000Z" pageLevel="1" style="font-family:Calibri;font-size:11.0pt" lang="en-US"><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Outline author="Author" lastModifiedBy="Author" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{A42E0040-CACE-0692-3494-76901850CE52}{23}{B0}"><one:Position x="36.0" y="36.0" z="0"/><one:Size width="101.66748046875" height="13.4277172088623"/><one:Indents><one:Indent level="0" indent="0.0"/></one:Indents><one:OEChildren><one:OE creationTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{A42E0040-CACE-0692-3494-76901850CE52}{24}{B0}" alignment="left"><one:T><![CDATA[Original]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline style="font-family:Calibri;font-size:18.0pt" author="Rich author" lastModifiedBy="Rich author" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{3BFCF1C3-BFC6-0049-1138-D820866F0C0D}{1}{B0}"><one:Position x="72.0" y="144.0" z="1"/><one:Size width="158.7714996337891" height="21.9726734161377"/><one:Indents><one:Indent level="0" indent="0.0"/></one:Indents><one:OEChildren><one:OE creationTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{3BFCF1C3-BFC6-0049-1138-D820866F0C0D}{3}{B0}" alignment="left"><one:T><![CDATA[<span | |
| 3 | style='font-style:italic'>Typed café &#129408;</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page> |
corpus/formatted-insertion/empty-typed/cold/read/payloads.json created+3| ... | ... | @@ -0,0 +1,3 @@ |
| 1 | [ | |
| 2 | ||
| 3 | ] | |
| \ No newline at end of file |
corpus/formatted-insertion/empty-typed/cold/run.json created+18| ... | ... | @@ -0,0 +1,18 @@ |
| 1 | { | |
| 2 | "notebook": "/Users/clo/dev/one/evidence/m10/formatted-insertion-isolated/empty-typed", | |
| 3 | "expected_pages": 1, | |
| 4 | "author": null, | |
| 5 | "author_timeout_seconds": 600, | |
| 6 | "inspect": false, | |
| 7 | "collect_notebook": true, | |
| 8 | "base": { | |
| 9 | "file": "win7-office-base.qcow2", | |
| 10 | "format": "qcow2", | |
| 11 | "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346", | |
| 12 | "virtual_size": 68719476736 | |
| 13 | }, | |
| 14 | "scripts": { | |
| 15 | "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331", | |
| 16 | "read.ps1": "086789e467779add0fc071ad8c524c2b02d3d0d609aea4a41f3128cadba371e8" | |
| 17 | } | |
| 18 | } |
corpus/formatted-insertion/empty-typed/cold/source.json created+8| ... | ... | @@ -0,0 +1,8 @@ |
| 1 | [ | |
| 2 | { | |
| 3 | "path": "synthetic.one", | |
| 4 | "bytes": 6016, | |
| 5 | "sha256": "855460055414c52034d0cf62b2e855b460deaedc17d1f276d6b3738458608f2e", | |
| 6 | "mtime_ns": 1788842844349962032 | |
| 7 | } | |
| 8 | ] |
corpus/formatted-insertion/empty-typed/cold/teardown.json created+1| ... | ... | @@ -0,0 +1 @@ |
| 1 | {"absent": true} |
corpus/formatted-insertion/empty-typed/reverse/control-before.xml created+3| ... | ... | @@ -0,0 +1,3 @@ |
| 1 | <?xml version="1.0"?> | |
| 2 | <one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{16390213-3B15-03C0-2FEB-38DCB7F70E1A}{1}{B0}" name="Original" dateTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T05:06:46.000Z" pageLevel="1" style="font-family:Calibri;font-size:11.0pt" lang="en-US"><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Outline author="Author" lastModifiedBy="Author" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{CF5FDB78-850B-00C5-1E73-34BB974577A8}{23}{B0}"><one:Position x="36.0" y="36.0" z="0"/><one:Size width="101.66748046875" height="13.4277172088623"/><one:Indents><one:Indent level="0" indent="0.0"/></one:Indents><one:OEChildren><one:OE creationTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{CF5FDB78-850B-00C5-1E73-34BB974577A8}{24}{B0}" alignment="left"><one:T><![CDATA[Original]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline style="font-family:Calibri;font-size:18.0pt" author="Rich author" lastModifiedBy="Rich author" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{508D2AFB-F003-061E-3BDF-9A0B097AB5F7}{1}{B0}"><one:Position x="72.0" y="144.0" z="1"/><one:Size width="158.7714996337891" height="21.9726734161377"/><one:Indents><one:Indent level="0" indent="0.0"/></one:Indents><one:OEChildren><one:OE creationTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{508D2AFB-F003-061E-3BDF-9A0B097AB5F7}{3}{B0}" alignment="left"><one:T><![CDATA[<span | |
| 3 | style='font-style:italic'>Typed café &#129408;</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page> |
corpus/formatted-insertion/empty-typed/reverse/control-update.xml created+2| ... | ... | @@ -0,0 +1,2 @@ |
| 1 | <one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{16390213-3B15-03C0-2FEB-38DCB7F70E1A}{1}{B0}"><one:Outline style="font-family:Calibri;font-size:18.0pt" author="Rich author" lastModifiedBy="Rich author" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{508D2AFB-F003-061E-3BDF-9A0B097AB5F7}{1}{B0}" xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote"><one:Position x="72.0" y="144.0" z="1" /><one:Size width="158.7714996337891" height="21.9726734161377" /><one:Indents><one:Indent level="0" indent="0.0" /></one:Indents><one:OEChildren><one:OE creationTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{508D2AFB-F003-061E-3BDF-9A0B097AB5F7}{3}{B0}" alignment="left"><one:T><![CDATA[<span | |
| 2 | style='font-style:italic'>Typed café &#129408;</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page> | |
| \ No newline at end of file |
corpus/formatted-insertion/empty-typed/reverse/edit-before.xml created+3| ... | ... | @@ -0,0 +1,3 @@ |
| 1 | <?xml version="1.0"?> | |
| 2 | <one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{16390213-3B15-03C0-2FEB-38DCB7F70E1A}{1}{B0}" name="Original" dateTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T05:06:46.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 style="font-family:Calibri;font-size:11.0pt" author="Author" lastModifiedBy="Author" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{CF5FDB78-850B-00C5-1E73-34BB974577A8}{23}{B0}"><one:Position x="36.0" y="36.0" z="1"/><one:Size width="101.66748046875" height="13.4277172088623"/><one:Indents><one:Indent level="0" indent="0.0"/></one:Indents><one:OEChildren><one:OE creationTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{CF5FDB78-850B-00C5-1E73-34BB974577A8}{24}{B0}" alignment="left"><one:T><![CDATA[Original]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="Rich author" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T05:06:55.000Z" objectID="{508D2AFB-F003-061E-3BDF-9A0B097AB5F7}{1}{B0}"><one:Position x="72.0" y="144.0" z="0"/><one:Size width="158.7714996337891" height="21.9726734161377"/><one:Indents><one:Indent level="0" indent="0.0"/></one:Indents><one:OEChildren><one:OE creationTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T05:06:55.000Z" objectID="{508D2AFB-F003-061E-3BDF-9A0B097AB5F7}{3}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:18.0pt"><one:T><![CDATA[<span | |
| 3 | style='font-style:italic'>Typed café &#129408;</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page> |
corpus/formatted-insertion/empty-typed/reverse/edit-update.xml created+2| ... | ... | @@ -0,0 +1,2 @@ |
| 1 | <one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{16390213-3B15-03C0-2FEB-38DCB7F70E1A}{1}{B0}"><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0" xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" /><one:Outline author="Rich author" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T05:06:55.000Z" objectID="{508D2AFB-F003-061E-3BDF-9A0B097AB5F7}{1}{B0}" xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote"><one:Position x="72.0" y="144.0" z="0" /><one:Size width="158.7714996337891" height="21.9726734161377" /><one:Indents><one:Indent level="0" indent="0.0" /></one:Indents><one:OEChildren><one:OE creationTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T05:06:55.000Z" objectID="{508D2AFB-F003-061E-3BDF-9A0B097AB5F7}{3}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:18.0pt"><one:T>&lt;span | |
| 2 | style='font-style:italic'&gt;Native Typed café &amp;#129408;&lt;/span&gt;</one:T></one:OE></one:OEChildren></one:Outline></one:Page> | |
| \ No newline at end of file |
corpus/formatted-insertion/empty-typed/reverse/notebook/synthetic.one created| Binary files /dev/null and b/corpus/formatted-insertion/empty-typed/reverse/notebook/synthetic.one differ |
corpus/formatted-insertion/empty-typed/reverse/read/environment.json created+7| ... | ... | @@ -0,0 +1,7 @@ |
| 1 | { | |
| 2 | "powershell": "5.1.14409.1005", | |
| 3 | "schema": "xs2010", | |
| 4 | "hostname": "ONE-M6-8F1E54CA", | |
| 5 | "cold": false, | |
| 6 | "onenote": "14.0.4763.1000" | |
| 7 | } |
corpus/formatted-insertion/empty-typed/reverse/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="{F9BA22F6-DA01-4734-87A1-B4C6DD99C88D}{1}{B0}" path="C:\one-tests\runs\capture\notebook" lastModifiedTime="2026-09-08T05:07:07.000Z" color="#B49EDE"><one:Section name="synthetic" ID="{3639FAA6-1E08-0FC0-3700-B846335A2C86}{1}{B0}" path="C:\one-tests\runs\capture\notebook\synthetic.one" lastModifiedTime="2026-09-08T05:07:07.000Z" color="#8AA8E4"><one:Page ID="{EF5F23CD-A016-0CC5-0698-B42113E85534}{1}{B0}" name="Original" dateTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T05:07:07.000Z" pageLevel="1"/></one:Section></one:Notebook> |
corpus/formatted-insertion/empty-typed/reverse/read/page-000.xml created+3| ... | ... | @@ -0,0 +1,3 @@ |
| 1 | <?xml version="1.0"?> | |
| 2 | <one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{EF5F23CD-A016-0CC5-0698-B42113E85534}{1}{B0}" name="Original" dateTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T05:07:07.000Z" pageLevel="1" lang="en-US"><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Outline style="font-family:Calibri;font-size:11.0pt" author="Author" lastModifiedBy="Author" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{3639FAA6-1E08-0FC0-3700-B846335A2C86}{23}{B0}"><one:Position x="36.0" y="36.0" z="1"/><one:Size width="101.66748046875" height="13.4277172088623"/><one:Indents><one:Indent level="0" indent="0.0"/></one:Indents><one:OEChildren><one:OE creationTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{3639FAA6-1E08-0FC0-3700-B846335A2C86}{24}{B0}" alignment="left"><one:T><![CDATA[Original]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="Rich author" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T05:06:55.000Z" objectID="{A9EB0B25-6B00-091B-12AC-16F6AD65EED9}{1}{B0}"><one:Position x="72.0" y="144.0" z="0"/><one:Size width="158.7714996337891" height="43.9453468322754"/><one:Indents><one:Indent level="0" indent="0.0"/></one:Indents><one:OEChildren><one:OE creationTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T05:06:55.000Z" objectID="{A9EB0B25-6B00-091B-12AC-16F6AD65EED9}{3}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:18.0pt"><one:T><![CDATA[<span | |
| 3 | style='font-style:italic'>Native Typed café &#129408;</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page> |
corpus/formatted-insertion/empty-typed/reverse/read/payloads.json created+3| ... | ... | @@ -0,0 +1,3 @@ |
| 1 | [ | |
| 2 | ||
| 3 | ] | |
| \ No newline at end of file |
corpus/formatted-insertion/empty-typed/reverse/reverse-verification.json created+5| ... | ... | @@ -0,0 +1,5 @@ |
| 1 | { | |
| 2 | "paragraphs": 2, | |
| 3 | "characters": 27, | |
| 4 | "exact_native_character_styles_after_control": true | |
| 5 | } |
corpus/formatted-insertion/empty-typed/reverse/run.json created+19| ... | ... | @@ -0,0 +1,19 @@ |
| 1 | { | |
| 2 | "notebook": "/Users/clo/dev/one/evidence/m10/formatted-insertion-isolated/empty-typed", | |
| 3 | "expected_pages": 1, | |
| 4 | "author": "evidence/m10/formatted-reverse-controlled.ps1", | |
| 5 | "author_timeout_seconds": 600, | |
| 6 | "inspect": false, | |
| 7 | "collect_notebook": true, | |
| 8 | "base": { | |
| 9 | "file": "win7-office-base.qcow2", | |
| 10 | "format": "qcow2", | |
| 11 | "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346", | |
| 12 | "virtual_size": 68719476736 | |
| 13 | }, | |
| 14 | "scripts": { | |
| 15 | "author.ps1": "4362d0ba551eb00b2eca1c5563d76352469f85d3981155bf2682c159a03ddedb", | |
| 16 | "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331", | |
| 17 | "read.ps1": "df4244a18ab3e9c21083b8df61b08b863e8cce0ec4bf0c9cd742a8ee6f79877d" | |
| 18 | } | |
| 19 | } |
corpus/formatted-insertion/empty-typed/reverse/source.json created+8| ... | ... | @@ -0,0 +1,8 @@ |
| 1 | [ | |
| 2 | { | |
| 3 | "path": "synthetic.one", | |
| 4 | "bytes": 6016, | |
| 5 | "sha256": "855460055414c52034d0cf62b2e855b460deaedc17d1f276d6b3738458608f2e", | |
| 6 | "mtime_ns": 1788842844349962032 | |
| 7 | } | |
| 8 | ] |
corpus/formatted-insertion/empty-typed/reverse/teardown.json created+1| ... | ... | @@ -0,0 +1 @@ |
| 1 | {"absent": true} |
corpus/formatted-insertion/empty/candidate/synthetic.one created| Binary files /dev/null and b/corpus/formatted-insertion/empty/candidate/synthetic.one differ |
corpus/formatted-insertion/empty/cold/notebook/synthetic.one created| Binary files /dev/null and b/corpus/formatted-insertion/empty/cold/notebook/synthetic.one differ |
corpus/formatted-insertion/empty/cold/read/environment.json created+7| ... | ... | @@ -0,0 +1,7 @@ |
| 1 | { | |
| 2 | "powershell": "5.1.14409.1005", | |
| 3 | "schema": "xs2010", | |
| 4 | "hostname": "ONE-M6-6DB25082", | |
| 5 | "cold": true, | |
| 6 | "onenote": "14.0.4763.1000" | |
| 7 | } |
corpus/formatted-insertion/empty/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="{A60F5D0F-AE39-49B1-B687-94A26771424E}{1}{B0}" path="C:\one-tests\runs\capture\notebook" lastModifiedTime="2026-09-08T04:49:17.000Z" color="#B49EDE"><one:Section name="synthetic" ID="{8EAF1BA2-D0D2-0DEF-0CDD-B07549372B65}{1}{B0}" path="C:\one-tests\runs\capture\notebook\synthetic.one" lastModifiedTime="2026-09-08T04:49:17.000Z" color="#8AA8E4"><one:Page ID="{57C9C2C9-6ECC-0EEA-3D45-BC12698552D7}{1}{B0}" name="Original" dateTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T04:49:17.000Z" pageLevel="1"/></one:Section></one:Notebook> |
corpus/formatted-insertion/empty/cold/read/page-000.xml created+2| ... | ... | @@ -0,0 +1,2 @@ |
| 1 | <?xml version="1.0"?> | |
| 2 | <one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{57C9C2C9-6ECC-0EEA-3D45-BC12698552D7}{1}{B0}" name="Original" dateTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T04:49:17.000Z" pageLevel="1" style="font-family:Calibri;font-size:11.0pt" lang="en-US"><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Outline author="Author" lastModifiedBy="Author" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{8EAF1BA2-D0D2-0DEF-0CDD-B07549372B65}{23}{B0}"><one:Position x="36.0" y="36.0" z="0"/><one:Size width="101.66748046875" height="13.4277172088623"/><one:Indents><one:Indent level="0" indent="0.0"/></one:Indents><one:OEChildren><one:OE creationTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{8EAF1BA2-D0D2-0DEF-0CDD-B07549372B65}{24}{B0}" alignment="left"><one:T><![CDATA[Original]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page> |
corpus/formatted-insertion/empty/cold/read/payloads.json created+3| ... | ... | @@ -0,0 +1,3 @@ |
| 1 | [ | |
| 2 | ||
| 3 | ] | |
| \ No newline at end of file |
corpus/formatted-insertion/empty/cold/run.json created+18| ... | ... | @@ -0,0 +1,18 @@ |
| 1 | { | |
| 2 | "notebook": "/Users/clo/dev/one/evidence/m10/formatted-insertion-isolated/empty", | |
| 3 | "expected_pages": 1, | |
| 4 | "author": null, | |
| 5 | "author_timeout_seconds": 600, | |
| 6 | "inspect": false, | |
| 7 | "collect_notebook": true, | |
| 8 | "base": { | |
| 9 | "file": "win7-office-base.qcow2", | |
| 10 | "format": "qcow2", | |
| 11 | "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346", | |
| 12 | "virtual_size": 68719476736 | |
| 13 | }, | |
| 14 | "scripts": { | |
| 15 | "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331", | |
| 16 | "read.ps1": "086789e467779add0fc071ad8c524c2b02d3d0d609aea4a41f3128cadba371e8" | |
| 17 | } | |
| 18 | } |
corpus/formatted-insertion/empty/cold/source.json created+8| ... | ... | @@ -0,0 +1,8 @@ |
| 1 | [ | |
| 2 | { | |
| 3 | "path": "synthetic.one", | |
| 4 | "bytes": 5624, | |
| 5 | "sha256": "bd592be42dc93e95444174ceceb19d1fc718fbe53c08403f87b6dec3207dc38d", | |
| 6 | "mtime_ns": 1788842844347041269 | |
| 7 | } | |
| 8 | ] |
corpus/formatted-insertion/empty/cold/teardown.json created+1| ... | ... | @@ -0,0 +1 @@ |
| 1 | {"absent": true} |
corpus/formatted-insertion/empty/typed-after-cold/candidate/synthetic.one created| Binary files /dev/null and b/corpus/formatted-insertion/empty/typed-after-cold/candidate/synthetic.one differ |
corpus/formatted-insertion/empty/typed-after-cold/read/environment.json created+7| ... | ... | @@ -0,0 +1,7 @@ |
| 1 | { | |
| 2 | "powershell": "5.1.14409.1005", | |
| 3 | "schema": "xs2010", | |
| 4 | "hostname": "ONE-M6-2A09ABA3", | |
| 5 | "cold": true, | |
| 6 | "onenote": "14.0.4763.1000" | |
| 7 | } |
corpus/formatted-insertion/empty/typed-after-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="{57C8FDE8-BE28-4C01-8B6F-A901BAEA2926}{1}{B0}" path="C:\one-tests\runs\capture\notebook" lastModifiedTime="2026-09-08T04:57:05.000Z" color="#B49EDE"><one:Section name="synthetic" ID="{AE4499B4-D894-042B-2496-FDB9EA794340}{1}{B0}" path="C:\one-tests\runs\capture\notebook\synthetic.one" lastModifiedTime="2026-09-08T04:57:05.000Z" color="#8AA8E4"><one:Page ID="{772240DF-668A-072E-150E-F1DECACB3AF2}{1}{B0}" name="Original" dateTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T04:57:05.000Z" pageLevel="1"/></one:Section></one:Notebook> |
corpus/formatted-insertion/empty/typed-after-cold/read/page-000.xml created+3| ... | ... | @@ -0,0 +1,3 @@ |
| 1 | <?xml version="1.0"?> | |
| 2 | <one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{772240DF-668A-072E-150E-F1DECACB3AF2}{1}{B0}" name="Original" dateTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T04:57:05.000Z" pageLevel="1" style="font-family:Calibri;font-size:11.0pt" lang="en-US"><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Outline author="Author" lastModifiedBy="Author" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{AE4499B4-D894-042B-2496-FDB9EA794340}{23}{B0}"><one:Position x="36.0" y="36.0" z="0"/><one:Size width="101.66748046875" height="13.4277172088623"/><one:Indents><one:Indent level="0" indent="0.0"/></one:Indents><one:OEChildren><one:OE creationTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{AE4499B4-D894-042B-2496-FDB9EA794340}{24}{B0}" alignment="left"><one:T><![CDATA[Original]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline style="font-family:Calibri;font-size:18.0pt" author="Rich author" lastModifiedBy="Rich author" lastModifiedTime="2026-09-08T04:53:58.000Z" objectID="{6EC06BD8-3CC0-0838-13B5-8BFED2119B71}{1}{B0}"><one:Position x="72.0" y="144.0" z="1"/><one:Size width="268.0195007324219" height="21.9726734161377"/><one:Indents><one:Indent level="0" indent="0.0"/></one:Indents><one:OEChildren><one:OE creationTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T04:53:58.000Z" objectID="{6EC06BD8-3CC0-0838-13B5-8BFED2119B71}{3}{B0}" alignment="left"><one:T><![CDATA[<span | |
| 3 | style='font-style:italic'>Typed after native reopen &#129408;</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page> |
corpus/formatted-insertion/empty/typed-after-cold/read/payloads.json created+3| ... | ... | @@ -0,0 +1,3 @@ |
| 1 | [ | |
| 2 | ||
| 3 | ] | |
| \ No newline at end of file |
corpus/formatted-insertion/manifest.json created+963| ... | ... | @@ -0,0 +1,963 @@ |
| 1 | { | |
| 2 | "generator": "crates/onestore/tests/insertion.rs:export_native_formatted_insertions", | |
| 3 | "cases": [ | |
| 4 | { | |
| 5 | "intent": { | |
| 6 | "author": "Rich author", | |
| 7 | "created": 1473310044, | |
| 8 | "formats": [ | |
| 9 | { | |
| 10 | "attributes": [ | |
| 11 | { | |
| 12 | "Bold": true | |
| 13 | }, | |
| 14 | { | |
| 15 | "Underline": true | |
| 16 | } | |
| 17 | ], | |
| 18 | "guid": [ | |
| 19 | 207, | |
| 20 | 169, | |
| 21 | 223, | |
| 22 | 216, | |
| 23 | 230, | |
| 24 | 235, | |
| 25 | 235, | |
| 26 | 75, | |
| 27 | 185, | |
| 28 | 94, | |
| 29 | 69, | |
| 30 | 228, | |
| 31 | 117, | |
| 32 | 205, | |
| 33 | 151, | |
| 34 | 134 | |
| 35 | ], | |
| 36 | "range": { | |
| 37 | "end": 4, | |
| 38 | "start": 0 | |
| 39 | } | |
| 40 | }, | |
| 41 | { | |
| 42 | "attributes": [ | |
| 43 | { | |
| 44 | "Font": "Arial" | |
| 45 | }, | |
| 46 | { | |
| 47 | "FontSize": 13.5 | |
| 48 | } | |
| 49 | ], | |
| 50 | "guid": [ | |
| 51 | 233, | |
| 52 | 34, | |
| 53 | 183, | |
| 54 | 44, | |
| 55 | 7, | |
| 56 | 99, | |
| 57 | 201, | |
| 58 | 75, | |
| 59 | 140, | |
| 60 | 220, | |
| 61 | 83, | |
| 62 | 226, | |
| 63 | 209, | |
| 64 | 176, | |
| 65 | 83, | |
| 66 | 88 | |
| 67 | ], | |
| 68 | "range": { | |
| 69 | "end": 7, | |
| 70 | "start": 5 | |
| 71 | } | |
| 72 | }, | |
| 73 | { | |
| 74 | "attributes": [ | |
| 75 | { | |
| 76 | "Italic": true | |
| 77 | }, | |
| 78 | { | |
| 79 | "Strike": true | |
| 80 | } | |
| 81 | ], | |
| 82 | "guid": [ | |
| 83 | 30, | |
| 84 | 196, | |
| 85 | 121, | |
| 86 | 136, | |
| 87 | 27, | |
| 88 | 75, | |
| 89 | 93, | |
| 90 | 79, | |
| 91 | 181, | |
| 92 | 130, | |
| 93 | 25, | |
| 94 | 17, | |
| 95 | 13, | |
| 96 | 139, | |
| 97 | 35, | |
| 98 | 217 | |
| 99 | ], | |
| 100 | "range": { | |
| 101 | "end": 14, | |
| 102 | "start": 8 | |
| 103 | } | |
| 104 | }, | |
| 105 | { | |
| 106 | "attributes": [ | |
| 107 | { | |
| 108 | "Superscript": true | |
| 109 | } | |
| 110 | ], | |
| 111 | "guid": [ | |
| 112 | 101, | |
| 113 | 236, | |
| 114 | 26, | |
| 115 | 203, | |
| 116 | 134, | |
| 117 | 120, | |
| 118 | 215, | |
| 119 | 67, | |
| 120 | 170, | |
| 121 | 155, | |
| 122 | 81, | |
| 123 | 250, | |
| 124 | 86, | |
| 125 | 214, | |
| 126 | 214, | |
| 127 | 111 | |
| 128 | ], | |
| 129 | "range": { | |
| 130 | "end": 17, | |
| 131 | "start": 15 | |
| 132 | } | |
| 133 | }, | |
| 134 | { | |
| 135 | "attributes": [ | |
| 136 | { | |
| 137 | "Color": [ | |
| 138 | 12, | |
| 139 | 34, | |
| 140 | 56 | |
| 141 | ] | |
| 142 | }, | |
| 143 | { | |
| 144 | "Highlight": [ | |
| 145 | 255, | |
| 146 | 255, | |
| 147 | 0 | |
| 148 | ] | |
| 149 | } | |
| 150 | ], | |
| 151 | "guid": [ | |
| 152 | 57, | |
| 153 | 2, | |
| 154 | 72, | |
| 155 | 237, | |
| 156 | 92, | |
| 157 | 155, | |
| 158 | 100, | |
| 159 | 72, | |
| 160 | 130, | |
| 161 | 100, | |
| 162 | 120, | |
| 163 | 181, | |
| 164 | 179, | |
| 165 | 69, | |
| 166 | 97, | |
| 167 | 11 | |
| 168 | ], | |
| 169 | "range": { | |
| 170 | "end": 23, | |
| 171 | "start": 18 | |
| 172 | } | |
| 173 | }, | |
| 174 | { | |
| 175 | "attributes": [ | |
| 176 | { | |
| 177 | "Subscript": true | |
| 178 | } | |
| 179 | ], | |
| 180 | "guid": [ | |
| 181 | 189, | |
| 182 | 73, | |
| 183 | 14, | |
| 184 | 147, | |
| 185 | 222, | |
| 186 | 140, | |
| 187 | 144, | |
| 188 | 65, | |
| 189 | 176, | |
| 190 | 86, | |
| 191 | 229, | |
| 192 | 249, | |
| 193 | 220, | |
| 194 | 119, | |
| 195 | 252, | |
| 196 | 192 | |
| 197 | ], | |
| 198 | "range": { | |
| 199 | "end": 26, | |
| 200 | "start": 24 | |
| 201 | } | |
| 202 | }, | |
| 203 | { | |
| 204 | "attributes": [ | |
| 205 | { | |
| 206 | "Bold": false | |
| 207 | }, | |
| 208 | { | |
| 209 | "Italic": false | |
| 210 | }, | |
| 211 | { | |
| 212 | "Color": null | |
| 213 | }, | |
| 214 | { | |
| 215 | "Highlight": null | |
| 216 | } | |
| 217 | ], | |
| 218 | "guid": [ | |
| 219 | 165, | |
| 220 | 80, | |
| 221 | 86, | |
| 222 | 53, | |
| 223 | 207, | |
| 224 | 121, | |
| 225 | 164, | |
| 226 | 68, | |
| 227 | 169, | |
| 228 | 152, | |
| 229 | 106, | |
| 230 | 34, | |
| 231 | 115, | |
| 232 | 110, | |
| 233 | 230, | |
| 234 | 151 | |
| 235 | ], | |
| 236 | "range": { | |
| 237 | "end": 30, | |
| 238 | "start": 27 | |
| 239 | } | |
| 240 | } | |
| 241 | ], | |
| 242 | "guid": [ | |
| 243 | 205, | |
| 244 | 161, | |
| 245 | 237, | |
| 246 | 192, | |
| 247 | 33, | |
| 248 | 131, | |
| 249 | 161, | |
| 250 | 64, | |
| 251 | 168, | |
| 252 | 94, | |
| 253 | 233, | |
| 254 | 150, | |
| 255 | 178, | |
| 256 | 37, | |
| 257 | 36, | |
| 258 | 190 | |
| 259 | ], | |
| 260 | "parent": "{71AF36A5-6150-452F-B7F3-66BFFF4C3582},22", | |
| 261 | "placement": { | |
| 262 | "Outline": { | |
| 263 | "x": 72.0, | |
| 264 | "y": 144.0 | |
| 265 | } | |
| 266 | }, | |
| 267 | "text": "Bold \ud83e\udd80 italic e\u0301 color \u6771\u4eac\rEnd" | |
| 268 | }, | |
| 269 | "name": "outline", | |
| 270 | "space": "{A8C9EFCE-DF4E-462A-866B-6AD8DFFE4C30},1", | |
| 271 | "candidate_sha256": "76f6b743caa9dc2b5ab342d6e6a742125ecbcd0ca2372062b42acbd08b5ebb4c", | |
| 272 | "cold_sha256": "151a49d8cf2e607a10a9c948286ce7eb3eb754fa90e9557a74a2cb1f1f0204cb", | |
| 273 | "reverse_sha256": "8127b63d52ecbc2ad88a0d4f0eccb7fc8b086983f25db40b5f3396616f39cc53", | |
| 274 | "omitted_table_outline_size": false | |
| 275 | }, | |
| 276 | { | |
| 277 | "intent": { | |
| 278 | "author": "Rich author", | |
| 279 | "created": 1473310044, | |
| 280 | "formats": [ | |
| 281 | { | |
| 282 | "attributes": [ | |
| 283 | { | |
| 284 | "Bold": true | |
| 285 | }, | |
| 286 | { | |
| 287 | "Underline": true | |
| 288 | } | |
| 289 | ], | |
| 290 | "guid": [ | |
| 291 | 141, | |
| 292 | 194, | |
| 293 | 83, | |
| 294 | 170, | |
| 295 | 169, | |
| 296 | 68, | |
| 297 | 33, | |
| 298 | 76, | |
| 299 | 139, | |
| 300 | 83, | |
| 301 | 12, | |
| 302 | 156, | |
| 303 | 72, | |
| 304 | 95, | |
| 305 | 145, | |
| 306 | 140 | |
| 307 | ], | |
| 308 | "range": { | |
| 309 | "end": 4, | |
| 310 | "start": 0 | |
| 311 | } | |
| 312 | }, | |
| 313 | { | |
| 314 | "attributes": [ | |
| 315 | { | |
| 316 | "Font": "Arial" | |
| 317 | }, | |
| 318 | { | |
| 319 | "FontSize": 13.5 | |
| 320 | } | |
| 321 | ], | |
| 322 | "guid": [ | |
| 323 | 168, | |
| 324 | 249, | |
| 325 | 0, | |
| 326 | 182, | |
| 327 | 1, | |
| 328 | 200, | |
| 329 | 117, | |
| 330 | 66, | |
| 331 | 179, | |
| 332 | 210, | |
| 333 | 69, | |
| 334 | 6, | |
| 335 | 83, | |
| 336 | 62, | |
| 337 | 157, | |
| 338 | 171 | |
| 339 | ], | |
| 340 | "range": { | |
| 341 | "end": 7, | |
| 342 | "start": 5 | |
| 343 | } | |
| 344 | }, | |
| 345 | { | |
| 346 | "attributes": [ | |
| 347 | { | |
| 348 | "Italic": true | |
| 349 | }, | |
| 350 | { | |
| 351 | "Strike": true | |
| 352 | } | |
| 353 | ], | |
| 354 | "guid": [ | |
| 355 | 152, | |
| 356 | 84, | |
| 357 | 172, | |
| 358 | 67, | |
| 359 | 218, | |
| 360 | 72, | |
| 361 | 77, | |
| 362 | 67, | |
| 363 | 143, | |
| 364 | 158, | |
| 365 | 58, | |
| 366 | 16, | |
| 367 | 177, | |
| 368 | 251, | |
| 369 | 222, | |
| 370 | 20 | |
| 371 | ], | |
| 372 | "range": { | |
| 373 | "end": 14, | |
| 374 | "start": 8 | |
| 375 | } | |
| 376 | }, | |
| 377 | { | |
| 378 | "attributes": [ | |
| 379 | { | |
| 380 | "Superscript": true | |
| 381 | } | |
| 382 | ], | |
| 383 | "guid": [ | |
| 384 | 29, | |
| 385 | 165, | |
| 386 | 47, | |
| 387 | 217, | |
| 388 | 107, | |
| 389 | 120, | |
| 390 | 31, | |
| 391 | 79, | |
| 392 | 148, | |
| 393 | 67, | |
| 394 | 148, | |
| 395 | 232, | |
| 396 | 78, | |
| 397 | 245, | |
| 398 | 157, | |
| 399 | 68 | |
| 400 | ], | |
| 401 | "range": { | |
| 402 | "end": 17, | |
| 403 | "start": 15 | |
| 404 | } | |
| 405 | }, | |
| 406 | { | |
| 407 | "attributes": [ | |
| 408 | { | |
| 409 | "Color": [ | |
| 410 | 12, | |
| 411 | 34, | |
| 412 | 56 | |
| 413 | ] | |
| 414 | }, | |
| 415 | { | |
| 416 | "Highlight": [ | |
| 417 | 255, | |
| 418 | 255, | |
| 419 | 0 | |
| 420 | ] | |
| 421 | } | |
| 422 | ], | |
| 423 | "guid": [ | |
| 424 | 165, | |
| 425 | 189, | |
| 426 | 67, | |
| 427 | 237, | |
| 428 | 2, | |
| 429 | 56, | |
| 430 | 67, | |
| 431 | 70, | |
| 432 | 169, | |
| 433 | 71, | |
| 434 | 239, | |
| 435 | 10, | |
| 436 | 236, | |
| 437 | 192, | |
| 438 | 119, | |
| 439 | 48 | |
| 440 | ], | |
| 441 | "range": { | |
| 442 | "end": 23, | |
| 443 | "start": 18 | |
| 444 | } | |
| 445 | }, | |
| 446 | { | |
| 447 | "attributes": [ | |
| 448 | { | |
| 449 | "Subscript": true | |
| 450 | } | |
| 451 | ], | |
| 452 | "guid": [ | |
| 453 | 116, | |
| 454 | 118, | |
| 455 | 37, | |
| 456 | 115, | |
| 457 | 74, | |
| 458 | 111, | |
| 459 | 247, | |
| 460 | 70, | |
| 461 | 172, | |
| 462 | 126, | |
| 463 | 100, | |
| 464 | 131, | |
| 465 | 159, | |
| 466 | 151, | |
| 467 | 38, | |
| 468 | 234 | |
| 469 | ], | |
| 470 | "range": { | |
| 471 | "end": 26, | |
| 472 | "start": 24 | |
| 473 | } | |
| 474 | }, | |
| 475 | { | |
| 476 | "attributes": [ | |
| 477 | { | |
| 478 | "Bold": false | |
| 479 | }, | |
| 480 | { | |
| 481 | "Italic": false | |
| 482 | }, | |
| 483 | { | |
| 484 | "Color": null | |
| 485 | }, | |
| 486 | { | |
| 487 | "Highlight": null | |
| 488 | } | |
| 489 | ], | |
| 490 | "guid": [ | |
| 491 | 32, | |
| 492 | 151, | |
| 493 | 42, | |
| 494 | 7, | |
| 495 | 76, | |
| 496 | 55, | |
| 497 | 143, | |
| 498 | 75, | |
| 499 | 178, | |
| 500 | 217, | |
| 501 | 234, | |
| 502 | 71, | |
| 503 | 135, | |
| 504 | 25, | |
| 505 | 75, | |
| 506 | 145 | |
| 507 | ], | |
| 508 | "range": { | |
| 509 | "end": 30, | |
| 510 | "start": 27 | |
| 511 | } | |
| 512 | } | |
| 513 | ], | |
| 514 | "guid": [ | |
| 515 | 191, | |
| 516 | 62, | |
| 517 | 177, | |
| 518 | 4, | |
| 519 | 17, | |
| 520 | 246, | |
| 521 | 2, | |
| 522 | 68, | |
| 523 | 130, | |
| 524 | 157, | |
| 525 | 199, | |
| 526 | 46, | |
| 527 | 35, | |
| 528 | 34, | |
| 529 | 28, | |
| 530 | 139 | |
| 531 | ], | |
| 532 | "parent": "{03D49648-056C-0F08-32C9-0424E8496E7D},10", | |
| 533 | "placement": { | |
| 534 | "Paragraph": { | |
| 535 | "before": "{03D49648-056C-0F08-32C9-0424E8496E7D},11" | |
| 536 | } | |
| 537 | }, | |
| 538 | "text": "Bold \ud83e\udd80 italic e\u0301 color \u6771\u4eac\rEnd" | |
| 539 | }, | |
| 540 | "name": "native-paragraph", | |
| 541 | "space": "{64183EF4-4E19-0CBE-3D3B-88FF17D58B1C},1", | |
| 542 | "candidate_sha256": "202823512283be980b6a139adcf5f4f369d15f17d60ed7b23f9f2289513aa4e9", | |
| 543 | "cold_sha256": "efb61aaedbe12cb00434f7e581259d112480158cacb66961d4168081b77a1112", | |
| 544 | "reverse_sha256": "753b320528748faa1ae11ee5eb710530d15636361674aab37f4c442ee5b9dd7b", | |
| 545 | "omitted_table_outline_size": false | |
| 546 | }, | |
| 547 | { | |
| 548 | "intent": { | |
| 549 | "author": "Rich author", | |
| 550 | "created": 1473310044, | |
| 551 | "formats": [ | |
| 552 | { | |
| 553 | "attributes": [ | |
| 554 | { | |
| 555 | "Bold": true | |
| 556 | }, | |
| 557 | { | |
| 558 | "Underline": true | |
| 559 | } | |
| 560 | ], | |
| 561 | "guid": [ | |
| 562 | 148, | |
| 563 | 53, | |
| 564 | 156, | |
| 565 | 113, | |
| 566 | 44, | |
| 567 | 188, | |
| 568 | 95, | |
| 569 | 71, | |
| 570 | 170, | |
| 571 | 198, | |
| 572 | 38, | |
| 573 | 41, | |
| 574 | 148, | |
| 575 | 201, | |
| 576 | 99, | |
| 577 | 234 | |
| 578 | ], | |
| 579 | "range": { | |
| 580 | "end": 4, | |
| 581 | "start": 0 | |
| 582 | } | |
| 583 | }, | |
| 584 | { | |
| 585 | "attributes": [ | |
| 586 | { | |
| 587 | "Font": "Arial" | |
| 588 | }, | |
| 589 | { | |
| 590 | "FontSize": 13.5 | |
| 591 | } | |
| 592 | ], | |
| 593 | "guid": [ | |
| 594 | 17, | |
| 595 | 187, | |
| 596 | 223, | |
| 597 | 32, | |
| 598 | 237, | |
| 599 | 203, | |
| 600 | 222, | |
| 601 | 66, | |
| 602 | 134, | |
| 603 | 24, | |
| 604 | 65, | |
| 605 | 131, | |
| 606 | 32, | |
| 607 | 188, | |
| 608 | 202, | |
| 609 | 177 | |
| 610 | ], | |
| 611 | "range": { | |
| 612 | "end": 7, | |
| 613 | "start": 5 | |
| 614 | } | |
| 615 | }, | |
| 616 | { | |
| 617 | "attributes": [ | |
| 618 | { | |
| 619 | "Italic": true | |
| 620 | }, | |
| 621 | { | |
| 622 | "Strike": true | |
| 623 | } | |
| 624 | ], | |
| 625 | "guid": [ | |
| 626 | 201, | |
| 627 | 233, | |
| 628 | 230, | |
| 629 | 86, | |
| 630 | 91, | |
| 631 | 117, | |
| 632 | 20, | |
| 633 | 68, | |
| 634 | 142, | |
| 635 | 220, | |
| 636 | 224, | |
| 637 | 178, | |
| 638 | 139, | |
| 639 | 52, | |
| 640 | 180, | |
| 641 | 203 | |
| 642 | ], | |
| 643 | "range": { | |
| 644 | "end": 14, | |
| 645 | "start": 8 | |
| 646 | } | |
| 647 | }, | |
| 648 | { | |
| 649 | "attributes": [ | |
| 650 | { | |
| 651 | "Superscript": true | |
| 652 | } | |
| 653 | ], | |
| 654 | "guid": [ | |
| 655 | 145, | |
| 656 | 203, | |
| 657 | 90, | |
| 658 | 115, | |
| 659 | 34, | |
| 660 | 107, | |
| 661 | 73, | |
| 662 | 66, | |
| 663 | 160, | |
| 664 | 157, | |
| 665 | 25, | |
| 666 | 141, | |
| 667 | 249, | |
| 668 | 128, | |
| 669 | 72, | |
| 670 | 159 | |
| 671 | ], | |
| 672 | "range": { | |
| 673 | "end": 17, | |
| 674 | "start": 15 | |
| 675 | } | |
| 676 | }, | |
| 677 | { | |
| 678 | "attributes": [ | |
| 679 | { | |
| 680 | "Color": [ | |
| 681 | 12, | |
| 682 | 34, | |
| 683 | 56 | |
| 684 | ] | |
| 685 | }, | |
| 686 | { | |
| 687 | "Highlight": [ | |
| 688 | 255, | |
| 689 | 255, | |
| 690 | 0 | |
| 691 | ] | |
| 692 | } | |
| 693 | ], | |
| 694 | "guid": [ | |
| 695 | 53, | |
| 696 | 51, | |
| 697 | 180, | |
| 698 | 64, | |
| 699 | 45, | |
| 700 | 92, | |
| 701 | 153, | |
| 702 | 70, | |
| 703 | 163, | |
| 704 | 88, | |
| 705 | 171, | |
| 706 | 172, | |
| 707 | 200, | |
| 708 | 222, | |
| 709 | 35, | |
| 710 | 19 | |
| 711 | ], | |
| 712 | "range": { | |
| 713 | "end": 23, | |
| 714 | "start": 18 | |
| 715 | } | |
| 716 | }, | |
| 717 | { | |
| 718 | "attributes": [ | |
| 719 | { | |
| 720 | "Subscript": true | |
| 721 | } | |
| 722 | ], | |
| 723 | "guid": [ | |
| 724 | 249, | |
| 725 | 231, | |
| 726 | 26, | |
| 727 | 88, | |
| 728 | 247, | |
| 729 | 6, | |
| 730 | 107, | |
| 731 | 65, | |
| 732 | 131, | |
| 733 | 6, | |
| 734 | 89, | |
| 735 | 211, | |
| 736 | 188, | |
| 737 | 246, | |
| 738 | 100, | |
| 739 | 155 | |
| 740 | ], | |
| 741 | "range": { | |
| 742 | "end": 26, | |
| 743 | "start": 24 | |
| 744 | } | |
| 745 | }, | |
| 746 | { | |
| 747 | "attributes": [ | |
| 748 | { | |
| 749 | "Bold": false | |
| 750 | }, | |
| 751 | { | |
| 752 | "Italic": false | |
| 753 | }, | |
| 754 | { | |
| 755 | "Color": null | |
| 756 | }, | |
| 757 | { | |
| 758 | "Highlight": null | |
| 759 | } | |
| 760 | ], | |
| 761 | "guid": [ | |
| 762 | 136, | |
| 763 | 160, | |
| 764 | 124, | |
| 765 | 20, | |
| 766 | 185, | |
| 767 | 141, | |
| 768 | 156, | |
| 769 | 75, | |
| 770 | 163, | |
| 771 | 89, | |
| 772 | 177, | |
| 773 | 152, | |
| 774 | 149, | |
| 775 | 251, | |
| 776 | 1, | |
| 777 | 204 | |
| 778 | ], | |
| 779 | "range": { | |
| 780 | "end": 30, | |
| 781 | "start": 27 | |
| 782 | } | |
| 783 | } | |
| 784 | ], | |
| 785 | "guid": [ | |
| 786 | 245, | |
| 787 | 178, | |
| 788 | 40, | |
| 789 | 105, | |
| 790 | 54, | |
| 791 | 125, | |
| 792 | 175, | |
| 793 | 68, | |
| 794 | 190, | |
| 795 | 59, | |
| 796 | 54, | |
| 797 | 206, | |
| 798 | 186, | |
| 799 | 206, | |
| 800 | 134, | |
| 801 | 87 | |
| 802 | ], | |
| 803 | "parent": "{C38843E2-F74B-04BD-24AA-A8F3BCAAF6CF},14", | |
| 804 | "placement": { | |
| 805 | "Paragraph": { | |
| 806 | "before": null | |
| 807 | } | |
| 808 | }, | |
| 809 | "text": "Bold \ud83e\udd80 italic e\u0301 color \u6771\u4eac\rEnd" | |
| 810 | }, | |
| 811 | "name": "native-cell", | |
| 812 | "space": "{64183EF4-4E19-0CBE-3D3B-88FF17D58B1C},1", | |
| 813 | "candidate_sha256": "2d01da4a2c8a0cba582d97460b708c77eca38617f9103f4a3cc9eea33f0e0351", | |
| 814 | "cold_sha256": "b7324075349e45f31d9e9fb8638691f58efff1989be65f12f7711dc359898a64", | |
| 815 | "reverse_sha256": "04134b8db9b52aaf43dc5dfc90464d54802890e5d4966e7163a977e2ebd77e1e", | |
| 816 | "omitted_table_outline_size": true, | |
| 817 | "ui_sha256": "d67b70016af71db07a8012b85a5016897c08b715c6db8953e1fc45cfe008bc27" | |
| 818 | }, | |
| 819 | { | |
| 820 | "intent": { | |
| 821 | "author": "Rich author", | |
| 822 | "created": 1473310044, | |
| 823 | "formats": [ | |
| 824 | { | |
| 825 | "attributes": [ | |
| 826 | { | |
| 827 | "Italic": true | |
| 828 | }, | |
| 829 | { | |
| 830 | "FontSize": 18.0 | |
| 831 | } | |
| 832 | ], | |
| 833 | "guid": [ | |
| 834 | 135, | |
| 835 | 82, | |
| 836 | 13, | |
| 837 | 244, | |
| 838 | 205, | |
| 839 | 187, | |
| 840 | 105, | |
| 841 | 65, | |
| 842 | 153, | |
| 843 | 17, | |
| 844 | 70, | |
| 845 | 241, | |
| 846 | 83, | |
| 847 | 89, | |
| 848 | 99, | |
| 849 | 163 | |
| 850 | ], | |
| 851 | "range": { | |
| 852 | "end": 0, | |
| 853 | "start": 0 | |
| 854 | } | |
| 855 | } | |
| 856 | ], | |
| 857 | "guid": [ | |
| 858 | 201, | |
| 859 | 196, | |
| 860 | 43, | |
| 861 | 177, | |
| 862 | 4, | |
| 863 | 133, | |
| 864 | 60, | |
| 865 | 73, | |
| 866 | 128, | |
| 867 | 208, | |
| 868 | 16, | |
| 869 | 248, | |
| 870 | 199, | |
| 871 | 36, | |
| 872 | 237, | |
| 873 | 179 | |
| 874 | ], | |
| 875 | "parent": "{71AF36A5-6150-452F-B7F3-66BFFF4C3582},22", | |
| 876 | "placement": { | |
| 877 | "Outline": { | |
| 878 | "x": 72.0, | |
| 879 | "y": 144.0 | |
| 880 | } | |
| 881 | }, | |
| 882 | "text": "" | |
| 883 | }, | |
| 884 | "name": "empty", | |
| 885 | "space": "{A8C9EFCE-DF4E-462A-866B-6AD8DFFE4C30},1", | |
| 886 | "candidate_sha256": "bd592be42dc93e95444174ceceb19d1fc718fbe53c08403f87b6dec3207dc38d", | |
| 887 | "cold_sha256": "a0a59d1c5676e2b6742e13791f888c91a3e0494c980b66fb6ef0a3bf324fac7a" | |
| 888 | }, | |
| 889 | { | |
| 890 | "intent": { | |
| 891 | "author": "Rich author", | |
| 892 | "created": 1473310044, | |
| 893 | "formats": [ | |
| 894 | { | |
| 895 | "attributes": [ | |
| 896 | { | |
| 897 | "Italic": true | |
| 898 | }, | |
| 899 | { | |
| 900 | "FontSize": 18.0 | |
| 901 | } | |
| 902 | ], | |
| 903 | "guid": [ | |
| 904 | 183, | |
| 905 | 9, | |
| 906 | 145, | |
| 907 | 10, | |
| 908 | 11, | |
| 909 | 69, | |
| 910 | 244, | |
| 911 | 73, | |
| 912 | 144, | |
| 913 | 49, | |
| 914 | 203, | |
| 915 | 207, | |
| 916 | 41, | |
| 917 | 174, | |
| 918 | 161, | |
| 919 | 107 | |
| 920 | ], | |
| 921 | "range": { | |
| 922 | "end": 0, | |
| 923 | "start": 0 | |
| 924 | } | |
| 925 | } | |
| 926 | ], | |
| 927 | "guid": [ | |
| 928 | 38, | |
| 929 | 199, | |
| 930 | 125, | |
| 931 | 238, | |
| 932 | 88, | |
| 933 | 20, | |
| 934 | 244, | |
| 935 | 67, | |
| 936 | 146, | |
| 937 | 95, | |
| 938 | 200, | |
| 939 | 15, | |
| 940 | 97, | |
| 941 | 115, | |
| 942 | 247, | |
| 943 | 221 | |
| 944 | ], | |
| 945 | "parent": "{71AF36A5-6150-452F-B7F3-66BFFF4C3582},22", | |
| 946 | "placement": { | |
| 947 | "Outline": { | |
| 948 | "x": 72.0, | |
| 949 | "y": 144.0 | |
| 950 | } | |
| 951 | }, | |
| 952 | "text": "" | |
| 953 | }, | |
| 954 | "name": "empty-typed", | |
| 955 | "space": "{A8C9EFCE-DF4E-462A-866B-6AD8DFFE4C30},1", | |
| 956 | "candidate_sha256": "855460055414c52034d0cf62b2e855b460deaedc17d1f276d6b3738458608f2e", | |
| 957 | "cold_sha256": "12dcec5c696b989e0f78d76db6af8542104dec82e90b705269d53a8c52332871", | |
| 958 | "reverse_sha256": "bc64aba71aba93596edff6ed270ea8ff17285c31cb79e357a5640edf6e934112", | |
| 959 | "omitted_table_outline_size": false | |
| 960 | } | |
| 961 | ], | |
| 962 | "native_author": "tools/native/formatted-insertion.ps1" | |
| 963 | } |
corpus/formatted-insertion/native-cell/candidate/synthetic.one created| Binary files /dev/null and b/corpus/formatted-insertion/native-cell/candidate/synthetic.one differ |
corpus/formatted-insertion/native-cell/cold/notebook/synthetic.one created| Binary files /dev/null and b/corpus/formatted-insertion/native-cell/cold/notebook/synthetic.one differ |
corpus/formatted-insertion/native-cell/cold/read/af1af4b8987109ce1e335e538910fb3860b7c57eb3b6110a06aa2114e06d69a7.attachment created+1| ... | ... | @@ -0,0 +1 @@ |
| 1 | ../../../../append/round-01/native/append-01-complex/read/af1af4b8987109ce1e335e538910fb3860b7c57eb3b6110a06aa2114e06d69a7.attachment | |
| \ No newline at end of file |
corpus/formatted-insertion/native-cell/cold/read/environment.json created+7| ... | ... | @@ -0,0 +1,7 @@ |
| 1 | { | |
| 2 | "powershell": "5.1.14409.1005", | |
| 3 | "schema": "xs2010", | |
| 4 | "hostname": "ONE-M6-382BC211", | |
| 5 | "cold": true, | |
| 6 | "onenote": "14.0.4763.1000" | |
| 7 | } |
corpus/formatted-insertion/native-cell/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="{C908BAFF-4738-41AD-8781-DF368EC1A41C}{1}{B0}" path="C:\one-tests\runs\capture\notebook" lastModifiedTime="2026-09-08T04:49:18.000Z" color="#B49EDE"><one:Section name="synthetic" ID="{00A6EA90-3D33-0BF5-1CBF-DA0341FB877E}{1}{B0}" path="C:\one-tests\runs\capture\notebook\synthetic.one" lastModifiedTime="2026-09-08T04:49:18.000Z" color="#8AA8E4"><one:Page ID="{2CEF1916-B4F8-48E4-9BD8-7292BDC39B61}{1}{B0}" name="Fictitious: café, 東京, مرحبا" dateTime="2026-09-05T05:06:54.000Z" lastModifiedTime="2026-09-08T04:49:18.000Z" pageLevel="1"/></one:Section></one:Notebook> |
corpus/formatted-insertion/native-cell/cold/read/page-000.xml created+21| ... | ... | @@ -0,0 +1,21 @@ |
| 1 | <?xml version="1.0"?> | |
| 2 | <one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{2CEF1916-B4F8-48E4-9BD8-7292BDC39B61}{1}{B0}" name="Fictitious: café, 東京, مرحبا" dateTime="2026-09-05T05:06:54.000Z" lastModifiedTime="2026-09-08T04:49:18.000Z" pageLevel="1" lang="en-US"><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Outline author="snow" authorInitials="S" lastModifiedBy="snow" lastModifiedByInitials="S" lastModifiedTime="2026-09-05T05:06:56.000Z" objectID="{4B23B1AA-FF8D-4B52-942A-FE49425F7E00}{10}{B0}"><one:Position x="36.0" y="14.40000057220459" z="0"/><one:Size width="127.5136947631836" height="14.30000114440918"/><one:OEChildren><one:OE creationTime="2026-09-05T05:06:55.000Z" lastModifiedTime="2026-09-05T05:06:56.000Z" objectID="{4B23B1AA-FF8D-4B52-942A-FE49425F7E00}{11}{B0}" alignment="left" quickStyleIndex="0" style="font-size:11.0pt;color:#1F4E79"><one:T><![CDATA[<span | |
| 3 | style='font-weight:bold;font-family:Calibri' lang=en-US>Fictitious: café, </span><span | |
| 4 | style='font-weight:bold;font-family:SimSun' lang=en-US>東京</span><span | |
| 5 | style='font-weight:bold;font-family:Calibri' lang=en-US>, </span><span | |
| 6 | style='font-weight:bold;font-family:Arial;direction:rtl;unicode-bidi:embed' | |
| 7 | lang=ar-SA>مرحبا</span>]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="snow" authorInitials="S" lastModifiedBy="snow" lastModifiedByInitials="S" lastModifiedTime="2026-09-05T05:06:57.000Z" objectID="{1D936DBF-4CD8-410F-8E9C-7CC1E6539A49}{10}{B0}"><one:Position x="144.0" y="96.0" z="1"/><one:Size width="167.0449523925781" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-05T05:06:57.000Z" lastModifiedTime="2026-09-05T05:06:57.000Z" objectID="{1D936DBF-4CD8-410F-8E9C-7CC1E6539A49}{11}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Fictitious positioned outline.]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="snow" authorInitials="S" lastModifiedBy="snow" lastModifiedByInitials="S" lastModifiedTime="2026-09-05T05:06:58.000Z" objectID="{20BA0530-AA42-48A1-B8EC-D7350A3ED2C7}{10}{B0}"><one:Position x="144.0" y="192.0" z="2"/><one:Size width="72.0" height="0.750005722045898"/><one:OEChildren><one:OE creationTime="2026-09-05T05:06:58.000Z" lastModifiedTime="2026-09-05T05:06:58.000Z" objectID="{20BA0530-AA42-48A1-B8EC-D7350A3ED2C7}{11}{B0}" alignment="left"><one:Image format="png" originalPageNumber="0"><one:Data>iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAusB9Y9J1uoA | |
| 8 | AAAASUVORK5CYII=</one:Data></one:Image></one:OE></one:OEChildren></one:Outline><one:Outline author="snow" authorInitials="S" lastModifiedBy="snow" lastModifiedByInitials="S" lastModifiedTime="2026-09-05T05:06:59.000Z" objectID="{A5A01D50-6C3A-4B67-9D41-B0CB3EEF1DF4}{10}{B0}"><one:Position x="264.0" y="192.0" z="3"/><one:Size width="72.00001525878906" height="63.0"/><one:OEChildren><one:OE creationTime="2026-09-05T05:06:59.000Z" lastModifiedTime="2026-09-05T05:06:59.000Z" objectID="{A5A01D50-6C3A-4B67-9D41-B0CB3EEF1DF4}{11}{B0}" alignment="left"><one:InsertedFile pathCache="C:\Users\clover\AppData\Local\Microsoft\OneNote\14.0\OneNoteOfflineCache_Files\458001d8-0f1e-451f-81cb-621828fc0b39.txt" pathSource="C:\one-tests\runs\20260905-05\assets\fictitious-attachment.txt" preferredName="fictitious-attachment.txt"/></one:OE></one:OEChildren></one:Outline><one:Outline author="snow" authorInitials="S" lastModifiedBy="snow" lastModifiedByInitials="S" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{8B7F6400-0DAA-40E7-8249-529E16BCE6B2}{10}{B0}"><one:Position x="144.0" y="312.0" z="4"/><one:Size width="182.6545715332031" height="50.55070495605469"/><one:OEChildren><one:OE creationTime="2026-09-05T05:07:00.000Z" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{8B7F6400-0DAA-40E7-8249-529E16BCE6B2}{11}{B0}" alignment="left"><one:Table bordersVisible="true" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{8B7F6400-0DAA-40E7-8249-529E16BCE6B2}{12}{B0}"><one:Columns><one:Column index="0" width="129.3788909912109"/><one:Column index="1" width="45.14567184448242"/></one:Columns><one:Row objectID="{8B7F6400-0DAA-40E7-8249-529E16BCE6B2}{13}{B0}" lastModifiedTime="2026-09-08T04:47:24.000Z"><one:Cell lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{8B7F6400-0DAA-40E7-8249-529E16BCE6B2}{14}{B0}" lastModifiedByInitials="S"><one:OEChildren><one:OE creationTime="2026-09-05T05:07:00.000Z" lastModifiedTime="2026-09-05T05:07:00.000Z" objectID="{8B7F6400-0DAA-40E7-8249-529E16BCE6B2}{17}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Left cell]]></one:T></one:OE><one:OE author="Rich author" lastModifiedBy="Rich author" creationTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{21DF9517-87D7-00F5-18D8-CCA310D8962A}{1}{B0}" alignment="left"><one:T><![CDATA[<span style='font-weight:bold; | |
| 9 | text-decoration:underline;font-family:Calibri;font-size:11.0pt'>Bold</span><span | |
| 10 | style='font-family:Calibri;font-size:11.0pt'> </span><span style='font-family: | |
| 11 | Arial;font-size:13.5pt'>&#129408;</span><span style='font-family:Calibri; | |
| 12 | font-size:11.0pt'> </span><span style='font-style:italic;text-decoration:line-through; | |
| 13 | font-family:Calibri;font-size:11.0pt'>italic</span><span style='font-family: | |
| 14 | Calibri;font-size:11.0pt'> </span><span style='vertical-align:super;font-family: | |
| 15 | Calibri;font-size:11.0pt'>é</span><span style='font-family:Calibri;font-size: | |
| 16 | 11.0pt'> </span><span style='font-family:Calibri;font-size:11.0pt;color:#0C2238; | |
| 17 | background:yellow;mso-highlight:yellow'>color</span><span style='font-family: | |
| 18 | Calibri;font-size:11.0pt'> </span><span style='vertical-align:sub;font-family: | |
| 19 | Calibri;font-size:11.0pt'>東京</span><span style='font-family:Calibri;font-size: | |
| 20 | 11.0pt'><br> | |
| 21 | End</span>]]></one:T></one:OE></one:OEChildren></one:Cell><one:Cell lastModifiedTime="2026-09-05T05:07:00.000Z" objectID="{8B7F6400-0DAA-40E7-8249-529E16BCE6B2}{22}{B0}" lastModifiedByInitials="S"><one:OEChildren><one:OE creationTime="2026-09-05T05:07:00.000Z" lastModifiedTime="2026-09-05T05:07:00.000Z" objectID="{8B7F6400-0DAA-40E7-8249-529E16BCE6B2}{25}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Right cell]]></one:T></one:OE></one:OEChildren></one:Cell></one:Row></one:Table></one:OE></one:OEChildren></one:Outline></one:Page> |
corpus/formatted-insertion/native-cell/cold/read/payloads.json created+10| ... | ... | @@ -0,0 +1,10 @@ |
| 1 | [ | |
| 2 | { | |
| 3 | "sha256": "af1af4b8987109ce1e335e538910fb3860b7c57eb3b6110a06aa2114e06d69a7", | |
| 4 | "name": "fictitious-attachment.txt", | |
| 5 | "object": "{A5A01D50-6C3A-4B67-9D41-B0CB3EEF1DF4}{11}{B0}", | |
| 6 | "kind": "InsertedFile", | |
| 7 | "page": "{2CEF1916-B4F8-48E4-9BD8-7292BDC39B61}{1}{B0}", | |
| 8 | "bytes": 43 | |
| 9 | } | |
| 10 | ] | |
| \ No newline at end of file |
corpus/formatted-insertion/native-cell/cold/run.json created+18| ... | ... | @@ -0,0 +1,18 @@ |
| 1 | { | |
| 2 | "notebook": "/Users/clo/dev/one/evidence/m10/formatted-insertion-isolated/native-cell", | |
| 3 | "expected_pages": 1, | |
| 4 | "author": null, | |
| 5 | "author_timeout_seconds": 600, | |
| 6 | "inspect": false, | |
| 7 | "collect_notebook": true, | |
| 8 | "base": { | |
| 9 | "file": "win7-office-base.qcow2", | |
| 10 | "format": "qcow2", | |
| 11 | "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346", | |
| 12 | "virtual_size": 68719476736 | |
| 13 | }, | |
| 14 | "scripts": { | |
| 15 | "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331", | |
| 16 | "read.ps1": "086789e467779add0fc071ad8c524c2b02d3d0d609aea4a41f3128cadba371e8" | |
| 17 | } | |
| 18 | } |
corpus/formatted-insertion/native-cell/cold/source.json created+8| ... | ... | @@ -0,0 +1,8 @@ |
| 1 | [ | |
| 2 | { | |
| 3 | "path": "synthetic.one", | |
| 4 | "bytes": 27800, | |
| 5 | "sha256": "2d01da4a2c8a0cba582d97460b708c77eca38617f9103f4a3cc9eea33f0e0351", | |
| 6 | "mtime_ns": 1788842844345306887 | |
| 7 | } | |
| 8 | ] |
corpus/formatted-insertion/native-cell/cold/teardown.json created+1| ... | ... | @@ -0,0 +1 @@ |
| 1 | {"absent": true} |
corpus/formatted-insertion/native-cell/reverse/control-before.xml created+21| ... | ... | @@ -0,0 +1,21 @@ |
| 1 | <?xml version="1.0"?> | |
| 2 | <one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{BE914D0C-20F2-4E33-AE0F-7458034A05F5}{1}{B0}" name="Fictitious: café, 東京, مرحبا" dateTime="2026-09-05T05:06:54.000Z" lastModifiedTime="2026-09-08T05:09:10.000Z" pageLevel="1" lang="en-US"><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Outline author="snow" authorInitials="S" lastModifiedBy="snow" lastModifiedByInitials="S" lastModifiedTime="2026-09-05T05:06:56.000Z" objectID="{D95DE5B0-6B87-4D85-A1FD-F883FCD6E094}{10}{B0}"><one:Position x="36.0" y="14.40000057220459" z="0"/><one:Size width="127.5136947631836" height="14.30000114440918"/><one:OEChildren><one:OE creationTime="2026-09-05T05:06:55.000Z" lastModifiedTime="2026-09-05T05:06:56.000Z" objectID="{D95DE5B0-6B87-4D85-A1FD-F883FCD6E094}{11}{B0}" alignment="left" quickStyleIndex="0" style="font-size:11.0pt;color:#1F4E79"><one:T><![CDATA[<span | |
| 3 | style='font-weight:bold;font-family:Calibri' lang=en-US>Fictitious: café, </span><span | |
| 4 | style='font-weight:bold;font-family:SimSun' lang=en-US>東京</span><span | |
| 5 | style='font-weight:bold;font-family:Calibri' lang=en-US>, </span><span | |
| 6 | style='font-weight:bold;font-family:Arial;direction:rtl;unicode-bidi:embed' | |
| 7 | lang=ar-SA>مرحبا</span>]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="snow" authorInitials="S" lastModifiedBy="snow" lastModifiedByInitials="S" lastModifiedTime="2026-09-05T05:06:57.000Z" objectID="{8FED39A5-D8D2-47D8-BB4B-7A0B58DA04DD}{10}{B0}"><one:Position x="144.0" y="96.0" z="1"/><one:Size width="167.0449523925781" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-05T05:06:57.000Z" lastModifiedTime="2026-09-05T05:06:57.000Z" objectID="{8FED39A5-D8D2-47D8-BB4B-7A0B58DA04DD}{11}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Fictitious positioned outline.]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="snow" authorInitials="S" lastModifiedBy="snow" lastModifiedByInitials="S" lastModifiedTime="2026-09-05T05:06:58.000Z" objectID="{B2C4512A-3E48-4E76-8D3B-D1FFB4B74C53}{10}{B0}"><one:Position x="144.0" y="192.0" z="2"/><one:Size width="72.0" height="0.750005722045898"/><one:OEChildren><one:OE creationTime="2026-09-05T05:06:58.000Z" lastModifiedTime="2026-09-05T05:06:58.000Z" objectID="{B2C4512A-3E48-4E76-8D3B-D1FFB4B74C53}{11}{B0}" alignment="left"><one:Image format="png" originalPageNumber="0"><one:Data>iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAusB9Y9J1uoA | |
| 8 | AAAASUVORK5CYII=</one:Data></one:Image></one:OE></one:OEChildren></one:Outline><one:Outline author="snow" authorInitials="S" lastModifiedBy="snow" lastModifiedByInitials="S" lastModifiedTime="2026-09-05T05:06:59.000Z" objectID="{37DE494A-F830-4DB0-A896-B60180668360}{10}{B0}"><one:Position x="264.0" y="192.0" z="3"/><one:Size width="72.00001525878906" height="63.0"/><one:OEChildren><one:OE creationTime="2026-09-05T05:06:59.000Z" lastModifiedTime="2026-09-05T05:06:59.000Z" objectID="{37DE494A-F830-4DB0-A896-B60180668360}{11}{B0}" alignment="left"><one:InsertedFile pathCache="C:\Users\clover\AppData\Local\Microsoft\OneNote\14.0\OneNoteOfflineCache_Files\458001d8-0f1e-451f-81cb-621828fc0b39.txt" pathSource="C:\one-tests\runs\20260905-05\assets\fictitious-attachment.txt" preferredName="fictitious-attachment.txt"/></one:OE></one:OEChildren></one:Outline><one:Outline author="snow" authorInitials="S" lastModifiedBy="snow" lastModifiedByInitials="S" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{1901301A-99A0-4630-B79E-5454A8357826}{10}{B0}"><one:Position x="144.0" y="312.0" z="4"/><one:Size width="183.4246368408203" height="50.55070495605469"/><one:OEChildren><one:OE creationTime="2026-09-05T05:07:00.000Z" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{1901301A-99A0-4630-B79E-5454A8357826}{11}{B0}" alignment="left"><one:Table bordersVisible="true" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{1901301A-99A0-4630-B79E-5454A8357826}{12}{B0}"><one:Columns><one:Column index="0" width="130.1489715576172"/><one:Column index="1" width="45.14567184448242"/></one:Columns><one:Row objectID="{1901301A-99A0-4630-B79E-5454A8357826}{13}{B0}" lastModifiedTime="2026-09-08T04:47:24.000Z"><one:Cell lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{1901301A-99A0-4630-B79E-5454A8357826}{14}{B0}" lastModifiedByInitials="S"><one:OEChildren><one:OE creationTime="2026-09-05T05:07:00.000Z" lastModifiedTime="2026-09-05T05:07:00.000Z" objectID="{1901301A-99A0-4630-B79E-5454A8357826}{17}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Left cell]]></one:T></one:OE><one:OE author="Rich author" lastModifiedBy="Rich author" creationTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{B3A1C10D-13DD-0622-2D0F-CA69AE5108BE}{1}{B0}" alignment="left"><one:T><![CDATA[<span style='font-weight:bold; | |
| 9 | text-decoration:underline;font-family:Calibri;font-size:11.0pt'>Bold</span><span | |
| 10 | style='font-family:Calibri;font-size:11.0pt'> </span><span style='font-family: | |
| 11 | Arial;font-size:13.5pt'>&#129408;</span><span style='font-family:Calibri; | |
| 12 | font-size:11.0pt'> </span><span style='font-style:italic;text-decoration:line-through; | |
| 13 | font-family:Calibri;font-size:11.0pt'>italic</span><span style='font-family: | |
| 14 | Calibri;font-size:11.0pt'> </span><span style='vertical-align:super;font-family: | |
| 15 | Calibri;font-size:11.0pt'>é</span><span style='font-family:Calibri;font-size: | |
| 16 | 11.0pt'> </span><span style='font-family:Calibri;font-size:11.0pt;color:#0C2238; | |
| 17 | background:yellow;mso-highlight:yellow'>color</span><span style='font-family: | |
| 18 | Calibri;font-size:11.0pt'> </span><span style='vertical-align:sub;font-family: | |
| 19 | Calibri;font-size:11.0pt'>東京</span><span style='font-family:Calibri;font-size: | |
| 20 | 11.0pt'><br> | |
| 21 | End</span>]]></one:T></one:OE></one:OEChildren></one:Cell><one:Cell lastModifiedTime="2026-09-05T05:07:00.000Z" objectID="{1901301A-99A0-4630-B79E-5454A8357826}{22}{B0}" lastModifiedByInitials="S"><one:OEChildren><one:OE creationTime="2026-09-05T05:07:00.000Z" lastModifiedTime="2026-09-05T05:07:00.000Z" objectID="{1901301A-99A0-4630-B79E-5454A8357826}{25}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Right cell]]></one:T></one:OE></one:OEChildren></one:Cell></one:Row></one:Table></one:OE></one:OEChildren></one:Outline></one:Page> |
corpus/formatted-insertion/native-cell/reverse/control-update.xml created+14| ... | ... | @@ -0,0 +1,14 @@ |
| 1 | <one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{BE914D0C-20F2-4E33-AE0F-7458034A05F5}{1}{B0}"><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0" xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" /><one:Outline author="snow" authorInitials="S" lastModifiedBy="snow" lastModifiedByInitials="S" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{1901301A-99A0-4630-B79E-5454A8357826}{10}{B0}" xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote"><one:Position x="144.0" y="312.0" z="4" /><one:OEChildren><one:OE creationTime="2026-09-05T05:07:00.000Z" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{1901301A-99A0-4630-B79E-5454A8357826}{11}{B0}" alignment="left"><one:Table bordersVisible="true" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{1901301A-99A0-4630-B79E-5454A8357826}{12}{B0}"><one:Columns><one:Column index="0" width="130.1489715576172" /><one:Column index="1" width="45.14567184448242" /></one:Columns><one:Row objectID="{1901301A-99A0-4630-B79E-5454A8357826}{13}{B0}" lastModifiedTime="2026-09-08T04:47:24.000Z"><one:Cell lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{1901301A-99A0-4630-B79E-5454A8357826}{14}{B0}" lastModifiedByInitials="S"><one:OEChildren><one:OE creationTime="2026-09-05T05:07:00.000Z" lastModifiedTime="2026-09-05T05:07:00.000Z" objectID="{1901301A-99A0-4630-B79E-5454A8357826}{17}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Left cell]]></one:T></one:OE><one:OE author="Rich author" lastModifiedBy="Rich author" creationTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{B3A1C10D-13DD-0622-2D0F-CA69AE5108BE}{1}{B0}" alignment="left"><one:T><![CDATA[<span style='font-weight:bold; | |
| 2 | text-decoration:underline;font-family:Calibri;font-size:11.0pt'>Bold</span><span | |
| 3 | style='font-family:Calibri;font-size:11.0pt'> </span><span style='font-family: | |
| 4 | Arial;font-size:13.5pt'>&#129408;</span><span style='font-family:Calibri; | |
| 5 | font-size:11.0pt'> </span><span style='font-style:italic;text-decoration:line-through; | |
| 6 | font-family:Calibri;font-size:11.0pt'>italic</span><span style='font-family: | |
| 7 | Calibri;font-size:11.0pt'> </span><span style='vertical-align:super;font-family: | |
| 8 | Calibri;font-size:11.0pt'>é</span><span style='font-family:Calibri;font-size: | |
| 9 | 11.0pt'> </span><span style='font-family:Calibri;font-size:11.0pt;color:#0C2238; | |
| 10 | background:yellow;mso-highlight:yellow'>color</span><span style='font-family: | |
| 11 | Calibri;font-size:11.0pt'> </span><span style='vertical-align:sub;font-family: | |
| 12 | Calibri;font-size:11.0pt'>東京</span><span style='font-family:Calibri;font-size: | |
| 13 | 11.0pt'><br> | |
| 14 | End</span>]]></one:T></one:OE></one:OEChildren></one:Cell><one:Cell lastModifiedTime="2026-09-05T05:07:00.000Z" objectID="{1901301A-99A0-4630-B79E-5454A8357826}{22}{B0}" lastModifiedByInitials="S"><one:OEChildren><one:OE creationTime="2026-09-05T05:07:00.000Z" lastModifiedTime="2026-09-05T05:07:00.000Z" objectID="{1901301A-99A0-4630-B79E-5454A8357826}{25}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Right cell]]></one:T></one:OE></one:OEChildren></one:Cell></one:Row></one:Table></one:OE></one:OEChildren></one:Outline></one:Page> | |
| \ No newline at end of file |
corpus/formatted-insertion/native-cell/reverse/edit-before.xml created+23| ... | ... | @@ -0,0 +1,23 @@ |
| 1 | <?xml version="1.0"?> | |
| 2 | <one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{BE914D0C-20F2-4E33-AE0F-7458034A05F5}{1}{B0}" name="Fictitious: café, 東京, مرحبا" dateTime="2026-09-05T05:06:54.000Z" lastModifiedTime="2026-09-08T05:09:10.000Z" pageLevel="1" lang="en-US"><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Outline author="snow" authorInitials="S" lastModifiedBy="snow" lastModifiedByInitials="S" lastModifiedTime="2026-09-05T05:06:56.000Z" objectID="{D95DE5B0-6B87-4D85-A1FD-F883FCD6E094}{10}{B0}"><one:Position x="36.0" y="14.40000057220459" z="1"/><one:Size width="127.5136947631836" height="14.30000114440918"/><one:OEChildren><one:OE creationTime="2026-09-05T05:06:55.000Z" lastModifiedTime="2026-09-05T05:06:56.000Z" objectID="{D95DE5B0-6B87-4D85-A1FD-F883FCD6E094}{11}{B0}" alignment="left" quickStyleIndex="0" style="font-size:11.0pt;color:#1F4E79"><one:T><![CDATA[<span | |
| 3 | style='font-weight:bold;font-family:Calibri' lang=en-US>Fictitious: café, </span><span | |
| 4 | style='font-weight:bold;font-family:SimSun' lang=en-US>東京</span><span | |
| 5 | style='font-weight:bold;font-family:Calibri' lang=en-US>, </span><span | |
| 6 | style='font-weight:bold;font-family:Arial;direction:rtl;unicode-bidi:embed' | |
| 7 | lang=ar-SA>مرحبا</span>]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="snow" authorInitials="S" lastModifiedBy="snow" lastModifiedByInitials="S" lastModifiedTime="2026-09-05T05:06:57.000Z" objectID="{8FED39A5-D8D2-47D8-BB4B-7A0B58DA04DD}{10}{B0}"><one:Position x="144.0" y="96.0" z="2"/><one:Size width="167.0449523925781" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-05T05:06:57.000Z" lastModifiedTime="2026-09-05T05:06:57.000Z" objectID="{8FED39A5-D8D2-47D8-BB4B-7A0B58DA04DD}{11}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Fictitious positioned outline.]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="snow" authorInitials="S" lastModifiedBy="snow" lastModifiedByInitials="S" lastModifiedTime="2026-09-05T05:06:58.000Z" objectID="{B2C4512A-3E48-4E76-8D3B-D1FFB4B74C53}{10}{B0}"><one:Position x="144.0" y="192.0" z="3"/><one:Size width="72.0" height="0.750005722045898"/><one:OEChildren><one:OE creationTime="2026-09-05T05:06:58.000Z" lastModifiedTime="2026-09-05T05:06:58.000Z" objectID="{B2C4512A-3E48-4E76-8D3B-D1FFB4B74C53}{11}{B0}" alignment="left"><one:Image format="png" originalPageNumber="0"><one:Data>iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAusB9Y9J1uoA | |
| 8 | AAAASUVORK5CYII=</one:Data></one:Image></one:OE></one:OEChildren></one:Outline><one:Outline author="snow" authorInitials="S" lastModifiedBy="snow" lastModifiedByInitials="S" lastModifiedTime="2026-09-05T05:06:59.000Z" objectID="{37DE494A-F830-4DB0-A896-B60180668360}{10}{B0}"><one:Position x="264.0" y="192.0" z="4"/><one:Size width="72.00001525878906" height="63.0"/><one:OEChildren><one:OE creationTime="2026-09-05T05:06:59.000Z" lastModifiedTime="2026-09-05T05:06:59.000Z" objectID="{37DE494A-F830-4DB0-A896-B60180668360}{11}{B0}" alignment="left"><one:InsertedFile pathCache="C:\Users\clover\AppData\Local\Microsoft\OneNote\14.0\OneNoteOfflineCache_Files\458001d8-0f1e-451f-81cb-621828fc0b39.txt" pathSource="C:\one-tests\runs\20260905-05\assets\fictitious-attachment.txt" preferredName="fictitious-attachment.txt"/></one:OE></one:OEChildren></one:Outline><one:Outline author="snow" authorInitials="S" lastModifiedBy="snow" lastModifiedByInitials="S" lastModifiedTime="2026-09-08T05:09:19.000Z" objectID="{1901301A-99A0-4630-B79E-5454A8357826}{10}{B0}"><one:Position x="144.0" y="312.0" z="0"/><one:Size width="186.5719451904297" height="51.85495376586914"/><one:OEChildren><one:OE creationTime="2026-09-08T05:09:16.000Z" lastModifiedTime="2026-09-08T05:09:19.000Z" objectID="{B9A78589-7D39-4DF3-8EE7-24F5FF45921B}{16}{B0}" alignment="left"><one:Table bordersVisible="true" lastModifiedTime="2026-09-08T05:09:19.000Z" objectID="{B9A78589-7D39-4DF3-8EE7-24F5FF45921B}{17}{B0}"><one:Columns><one:Column index="0" width="133.2962799072266"/><one:Column index="1" width="45.14567184448242"/></one:Columns><one:Row objectID="{B9A78589-7D39-4DF3-8EE7-24F5FF45921B}{18}{B0}" lastModifiedTime="2026-09-08T05:09:19.000Z"><one:Cell lastModifiedTime="2026-09-08T05:09:19.000Z" objectID="{B9A78589-7D39-4DF3-8EE7-24F5FF45921B}{19}{B0}" lastModifiedByInitials="V"><one:OEChildren><one:OE creationTime="2026-09-08T05:09:19.000Z" lastModifiedTime="2026-09-08T05:09:19.000Z" objectID="{1901301A-99A0-4630-B79E-5454A8357826}{17}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Left cell]]></one:T></one:OE><one:OE author="Rich author" authorInitials="S" creationTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T05:09:19.000Z" objectID="{B3A1C10D-13DD-0622-2D0F-CA69AE5108BE}{1}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span style='font-weight:bold; | |
| 9 | text-decoration:underline;font-family:Calibri;font-size:11.0pt' lang=en-US>Bold</span><span | |
| 10 | style='font-family:Calibri;font-size:11.0pt' lang=en-US> </span><span | |
| 11 | style='font-family:Calibri;font-size:13.5pt' lang=en-US>&#129408;</span><span | |
| 12 | style='font-family:Calibri;font-size:11.0pt' lang=x-none> </span><span | |
| 13 | style='font-style:italic;text-decoration:line-through;font-family:Calibri; | |
| 14 | font-size:11.0pt' lang=x-none>italic</span><span style='font-family:Calibri; | |
| 15 | font-size:11.0pt' lang=x-none> </span><span style='vertical-align:super; | |
| 16 | font-family:Calibri;font-size:11.0pt' lang=x-none>é</span><span | |
| 17 | style='font-family:Calibri;font-size:11.0pt' lang=x-none> </span><span | |
| 18 | style='font-family:Calibri;font-size:11.0pt;color:#0C2238;background:yellow; | |
| 19 | mso-highlight:yellow' lang=x-none>color</span><span style='font-family:Calibri; | |
| 20 | font-size:11.0pt' lang=x-none> </span><span style='vertical-align:sub; | |
| 21 | font-family:SimSun;font-size:11.0pt' lang=x-none>東京</span><span | |
| 22 | style='font-family:Calibri;font-size:11.0pt' lang=en-US><br> | |
| 23 | End</span>]]></one:T></one:OE></one:OEChildren></one:Cell><one:Cell lastModifiedTime="2026-09-08T05:09:19.000Z" objectID="{B9A78589-7D39-4DF3-8EE7-24F5FF45921B}{39}{B0}" lastModifiedByInitials="V"><one:OEChildren><one:OE creationTime="2026-09-08T05:09:19.000Z" lastModifiedTime="2026-09-08T05:09:19.000Z" objectID="{1901301A-99A0-4630-B79E-5454A8357826}{25}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Right cell]]></one:T></one:OE></one:OEChildren></one:Cell></one:Row></one:Table></one:OE></one:OEChildren></one:Outline></one:Page> |
corpus/formatted-insertion/native-cell/reverse/edit-update.xml created+16| ... | ... | @@ -0,0 +1,16 @@ |
| 1 | <one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{BE914D0C-20F2-4E33-AE0F-7458034A05F5}{1}{B0}"><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0" xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" /><one:Outline author="snow" authorInitials="S" lastModifiedBy="snow" lastModifiedByInitials="S" lastModifiedTime="2026-09-08T05:09:19.000Z" objectID="{1901301A-99A0-4630-B79E-5454A8357826}{10}{B0}" xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote"><one:Position x="144.0" y="312.0" z="0" /><one:OEChildren><one:OE creationTime="2026-09-08T05:09:16.000Z" lastModifiedTime="2026-09-08T05:09:19.000Z" objectID="{B9A78589-7D39-4DF3-8EE7-24F5FF45921B}{16}{B0}" alignment="left"><one:Table bordersVisible="true" lastModifiedTime="2026-09-08T05:09:19.000Z" objectID="{B9A78589-7D39-4DF3-8EE7-24F5FF45921B}{17}{B0}"><one:Columns><one:Column index="0" width="133.2962799072266" /><one:Column index="1" width="45.14567184448242" /></one:Columns><one:Row objectID="{B9A78589-7D39-4DF3-8EE7-24F5FF45921B}{18}{B0}" lastModifiedTime="2026-09-08T05:09:19.000Z"><one:Cell lastModifiedTime="2026-09-08T05:09:19.000Z" objectID="{B9A78589-7D39-4DF3-8EE7-24F5FF45921B}{19}{B0}" lastModifiedByInitials="V"><one:OEChildren><one:OE creationTime="2026-09-08T05:09:19.000Z" lastModifiedTime="2026-09-08T05:09:19.000Z" objectID="{1901301A-99A0-4630-B79E-5454A8357826}{17}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Left cell]]></one:T></one:OE><one:OE author="Rich author" authorInitials="S" creationTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T05:09:19.000Z" objectID="{B3A1C10D-13DD-0622-2D0F-CA69AE5108BE}{1}{B0}" alignment="left" quickStyleIndex="0"><one:T>&lt;span style='font-weight:bold; | |
| 2 | text-decoration:underline;font-family:Calibri;font-size:11.0pt' lang=en-US&gt;Native Bold&lt;/span&gt;&lt;span | |
| 3 | style='font-family:Calibri;font-size:11.0pt' lang=en-US&gt; &lt;/span&gt;&lt;span | |
| 4 | style='font-family:Calibri;font-size:13.5pt' lang=en-US&gt;&amp;#129408;&lt;/span&gt;&lt;span | |
| 5 | style='font-family:Calibri;font-size:11.0pt' lang=x-none&gt; &lt;/span&gt;&lt;span | |
| 6 | style='font-style:italic;text-decoration:line-through;font-family:Calibri; | |
| 7 | font-size:11.0pt' lang=x-none&gt;italic&lt;/span&gt;&lt;span style='font-family:Calibri; | |
| 8 | font-size:11.0pt' lang=x-none&gt; &lt;/span&gt;&lt;span style='vertical-align:super; | |
| 9 | font-family:Calibri;font-size:11.0pt' lang=x-none&gt;é&lt;/span&gt;&lt;span | |
| 10 | style='font-family:Calibri;font-size:11.0pt' lang=x-none&gt; &lt;/span&gt;&lt;span | |
| 11 | style='font-family:Calibri;font-size:11.0pt;color:#0C2238;background:yellow; | |
| 12 | mso-highlight:yellow' lang=x-none&gt;color&lt;/span&gt;&lt;span style='font-family:Calibri; | |
| 13 | font-size:11.0pt' lang=x-none&gt; &lt;/span&gt;&lt;span style='vertical-align:sub; | |
| 14 | font-family:SimSun;font-size:11.0pt' lang=x-none&gt;東京&lt;/span&gt;&lt;span | |
| 15 | style='font-family:Calibri;font-size:11.0pt' lang=en-US&gt;&lt;br&gt; | |
| 16 | End&lt;/span&gt;</one:T></one:OE></one:OEChildren></one:Cell><one:Cell lastModifiedTime="2026-09-08T05:09:19.000Z" objectID="{B9A78589-7D39-4DF3-8EE7-24F5FF45921B}{39}{B0}" lastModifiedByInitials="V"><one:OEChildren><one:OE creationTime="2026-09-08T05:09:19.000Z" lastModifiedTime="2026-09-08T05:09:19.000Z" objectID="{1901301A-99A0-4630-B79E-5454A8357826}{25}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Right cell]]></one:T></one:OE></one:OEChildren></one:Cell></one:Row></one:Table></one:OE></one:OEChildren></one:Outline></one:Page> | |
| \ No newline at end of file |
corpus/formatted-insertion/native-cell/reverse/notebook/synthetic.one created| Binary files /dev/null and b/corpus/formatted-insertion/native-cell/reverse/notebook/synthetic.one differ |
corpus/formatted-insertion/native-cell/reverse/read/af1af4b8987109ce1e335e538910fb3860b7c57eb3b6110a06aa2114e06d69a7.attachment created+1| ... | ... | @@ -0,0 +1 @@ |
| 1 | ../../../../append/round-01/native/append-01-complex/read/af1af4b8987109ce1e335e538910fb3860b7c57eb3b6110a06aa2114e06d69a7.attachment | |
| \ No newline at end of file |
corpus/formatted-insertion/native-cell/reverse/read/environment.json created+7| ... | ... | @@ -0,0 +1,7 @@ |
| 1 | { | |
| 2 | "powershell": "5.1.14409.1005", | |
| 3 | "schema": "xs2010", | |
| 4 | "hostname": "ONE-M6-0BC5CBA6", | |
| 5 | "cold": false, | |
| 6 | "onenote": "14.0.4763.1000" | |
| 7 | } |
corpus/formatted-insertion/native-cell/reverse/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="{1D5CE013-2ABD-43D2-AEFD-1F7020778E2F}{1}{B0}" path="C:\one-tests\runs\capture\notebook" lastModifiedTime="2026-09-08T05:09:31.000Z" color="#B49EDE"><one:Section name="synthetic" ID="{B21D4528-7E27-0476-2024-E7DD43378AE0}{1}{B0}" path="C:\one-tests\runs\capture\notebook\synthetic.one" lastModifiedTime="2026-09-08T05:09:31.000Z" color="#8AA8E4"><one:Page ID="{9E54B6AE-F7EC-4767-A743-4F4CBF0F96FF}{1}{B0}" name="Fictitious: café, 東京, مرحبا" dateTime="2026-09-05T05:06:54.000Z" lastModifiedTime="2026-09-08T05:09:31.000Z" pageLevel="1"/></one:Section></one:Notebook> |
corpus/formatted-insertion/native-cell/reverse/read/page-000.xml created+23| ... | ... | @@ -0,0 +1,23 @@ |
| 1 | <?xml version="1.0"?> | |
| 2 | <one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{9E54B6AE-F7EC-4767-A743-4F4CBF0F96FF}{1}{B0}" name="Fictitious: café, 東京, مرحبا" dateTime="2026-09-05T05:06:54.000Z" lastModifiedTime="2026-09-08T05:09:31.000Z" pageLevel="1" lang="en-US"><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Outline author="snow" authorInitials="S" lastModifiedBy="snow" lastModifiedByInitials="S" lastModifiedTime="2026-09-05T05:06:56.000Z" objectID="{F9981E12-BC99-44D1-A8B1-C3974093739E}{10}{B0}"><one:Position x="36.0" y="14.40000057220459" z="1"/><one:Size width="127.5136947631836" height="14.30000114440918"/><one:OEChildren><one:OE creationTime="2026-09-05T05:06:55.000Z" lastModifiedTime="2026-09-05T05:06:56.000Z" objectID="{F9981E12-BC99-44D1-A8B1-C3974093739E}{11}{B0}" alignment="left" quickStyleIndex="0" style="font-size:11.0pt;color:#1F4E79"><one:T><![CDATA[<span | |
| 3 | style='font-weight:bold;font-family:Calibri' lang=en-US>Fictitious: café, </span><span | |
| 4 | style='font-weight:bold;font-family:SimSun' lang=en-US>東京</span><span | |
| 5 | style='font-weight:bold;font-family:Calibri' lang=en-US>, </span><span | |
| 6 | style='font-weight:bold;font-family:Arial;direction:rtl;unicode-bidi:embed' | |
| 7 | lang=ar-SA>مرحبا</span>]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="snow" authorInitials="S" lastModifiedBy="snow" lastModifiedByInitials="S" lastModifiedTime="2026-09-05T05:06:57.000Z" objectID="{AF28C207-0FCC-4E8C-B207-411FE49F97D7}{10}{B0}"><one:Position x="144.0" y="96.0" z="2"/><one:Size width="167.0449523925781" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-05T05:06:57.000Z" lastModifiedTime="2026-09-05T05:06:57.000Z" objectID="{AF28C207-0FCC-4E8C-B207-411FE49F97D7}{11}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Fictitious positioned outline.]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="snow" authorInitials="S" lastModifiedBy="snow" lastModifiedByInitials="S" lastModifiedTime="2026-09-05T05:06:58.000Z" objectID="{9201AA88-E956-4722-8477-EAEB08F2DF59}{10}{B0}"><one:Position x="144.0" y="192.0" z="3"/><one:Size width="72.0" height="0.750005722045898"/><one:OEChildren><one:OE creationTime="2026-09-05T05:06:58.000Z" lastModifiedTime="2026-09-05T05:06:58.000Z" objectID="{9201AA88-E956-4722-8477-EAEB08F2DF59}{11}{B0}" alignment="left"><one:Image format="png" originalPageNumber="0"><one:Data>iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAusB9Y9J1uoA | |
| 8 | AAAASUVORK5CYII=</one:Data></one:Image></one:OE></one:OEChildren></one:Outline><one:Outline author="snow" authorInitials="S" lastModifiedBy="snow" lastModifiedByInitials="S" lastModifiedTime="2026-09-05T05:06:59.000Z" objectID="{171BB2E8-2F2E-44E4-A1DA-8D153C23106A}{10}{B0}"><one:Position x="264.0" y="192.0" z="4"/><one:Size width="72.00001525878906" height="63.0"/><one:OEChildren><one:OE creationTime="2026-09-05T05:06:59.000Z" lastModifiedTime="2026-09-05T05:06:59.000Z" objectID="{171BB2E8-2F2E-44E4-A1DA-8D153C23106A}{11}{B0}" alignment="left"><one:InsertedFile pathCache="C:\Users\clover\AppData\Local\Microsoft\OneNote\14.0\OneNoteOfflineCache_Files\458001d8-0f1e-451f-81cb-621828fc0b39.txt" pathSource="C:\one-tests\runs\20260905-05\assets\fictitious-attachment.txt" preferredName="fictitious-attachment.txt"/></one:OE></one:OEChildren></one:Outline><one:Outline author="snow" authorInitials="S" lastModifiedBy="snow" lastModifiedByInitials="S" lastModifiedTime="2026-09-08T05:09:19.000Z" objectID="{39C4CBB8-4EBE-4F64-BED2-6F401470EB2C}{10}{B0}"><one:Position x="144.0" y="312.0" z="0"/><one:Size width="218.9918212890625" height="51.85495376586914"/><one:OEChildren><one:OE creationTime="2026-09-08T05:09:19.000Z" lastModifiedTime="2026-09-08T05:09:19.000Z" objectID="{99627E2B-AA27-44A7-87AB-1FE143000111}{51}{B0}" alignment="left"><one:Table bordersVisible="true" lastModifiedTime="2026-09-08T05:09:19.000Z" objectID="{99627E2B-AA27-44A7-87AB-1FE143000111}{52}{B0}"><one:Columns><one:Column index="0" width="165.7161407470703"/><one:Column index="1" width="45.14567184448242"/></one:Columns><one:Row objectID="{99627E2B-AA27-44A7-87AB-1FE143000111}{53}{B0}" lastModifiedTime="2026-09-08T05:09:19.000Z"><one:Cell lastModifiedTime="2026-09-08T05:09:19.000Z" objectID="{99627E2B-AA27-44A7-87AB-1FE143000111}{54}{B0}" lastModifiedByInitials="V"><one:OEChildren><one:OE creationTime="2026-09-08T05:09:19.000Z" lastModifiedTime="2026-09-08T05:09:19.000Z" objectID="{39C4CBB8-4EBE-4F64-BED2-6F401470EB2C}{17}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Left cell]]></one:T></one:OE><one:OE author="Rich author" authorInitials="S" creationTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T05:09:19.000Z" objectID="{93643AAF-C4C3-0F76-2443-F17D12149BB4}{1}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span style='font-weight:bold; | |
| 9 | text-decoration:underline;font-family:Calibri;font-size:11.0pt' lang=en-US>Native Bold</span><span | |
| 10 | style='font-family:Calibri;font-size:11.0pt' lang=en-US> </span><span | |
| 11 | style='font-family:Calibri;font-size:13.5pt' lang=en-US>&#129408;</span><span | |
| 12 | style='font-family:Calibri;font-size:11.0pt' lang=x-none> </span><span | |
| 13 | style='font-style:italic;text-decoration:line-through;font-family:Calibri; | |
| 14 | font-size:11.0pt' lang=x-none>italic</span><span style='font-family:Calibri; | |
| 15 | font-size:11.0pt' lang=x-none> </span><span style='vertical-align:super; | |
| 16 | font-family:Calibri;font-size:11.0pt' lang=x-none>é</span><span | |
| 17 | style='font-family:Calibri;font-size:11.0pt' lang=x-none> </span><span | |
| 18 | style='font-family:Calibri;font-size:11.0pt;color:#0C2238;background:yellow; | |
| 19 | mso-highlight:yellow' lang=x-none>color</span><span style='font-family:Calibri; | |
| 20 | font-size:11.0pt' lang=x-none> </span><span style='vertical-align:sub; | |
| 21 | font-family:SimSun;font-size:11.0pt' lang=x-none>東京</span><span | |
| 22 | style='font-family:Calibri;font-size:11.0pt' lang=en-US><br> | |
| 23 | End</span>]]></one:T></one:OE></one:OEChildren></one:Cell><one:Cell lastModifiedTime="2026-09-08T05:09:19.000Z" objectID="{99627E2B-AA27-44A7-87AB-1FE143000111}{68}{B0}" lastModifiedByInitials="V"><one:OEChildren><one:OE creationTime="2026-09-08T05:09:19.000Z" lastModifiedTime="2026-09-08T05:09:19.000Z" objectID="{39C4CBB8-4EBE-4F64-BED2-6F401470EB2C}{25}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Right cell]]></one:T></one:OE></one:OEChildren></one:Cell></one:Row></one:Table></one:OE></one:OEChildren></one:Outline></one:Page> |
corpus/formatted-insertion/native-cell/reverse/read/payloads.json created+10| ... | ... | @@ -0,0 +1,10 @@ |
| 1 | [ | |
| 2 | { | |
| 3 | "sha256": "af1af4b8987109ce1e335e538910fb3860b7c57eb3b6110a06aa2114e06d69a7", | |
| 4 | "name": "fictitious-attachment.txt", | |
| 5 | "object": "{171BB2E8-2F2E-44E4-A1DA-8D153C23106A}{11}{B0}", | |
| 6 | "kind": "InsertedFile", | |
| 7 | "page": "{9E54B6AE-F7EC-4767-A743-4F4CBF0F96FF}{1}{B0}", | |
| 8 | "bytes": 43 | |
| 9 | } | |
| 10 | ] | |
| \ No newline at end of file |
corpus/formatted-insertion/native-cell/reverse/reverse-verification.json created+5| ... | ... | @@ -0,0 +1,5 @@ |
| 1 | { | |
| 2 | "paragraphs": 5, | |
| 3 | "characters": 112, | |
| 4 | "exact_native_character_styles_after_control": true | |
| 5 | } |
corpus/formatted-insertion/native-cell/reverse/run.json created+19| ... | ... | @@ -0,0 +1,19 @@ |
| 1 | { | |
| 2 | "notebook": "/Users/clo/dev/one/evidence/m10/formatted-insertion-isolated/native-cell", | |
| 3 | "expected_pages": 1, | |
| 4 | "author": "evidence/m10/formatted-reverse-auto-size.ps1", | |
| 5 | "author_timeout_seconds": 600, | |
| 6 | "inspect": false, | |
| 7 | "collect_notebook": true, | |
| 8 | "base": { | |
| 9 | "file": "win7-office-base.qcow2", | |
| 10 | "format": "qcow2", | |
| 11 | "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346", | |
| 12 | "virtual_size": 68719476736 | |
| 13 | }, | |
| 14 | "scripts": { | |
| 15 | "author.ps1": "c5ebc74731fd4813803623b014ce9d6dbd6d2564918189865731807e6c458f9a", | |
| 16 | "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331", | |
| 17 | "read.ps1": "df4244a18ab3e9c21083b8df61b08b863e8cce0ec4bf0c9cd742a8ee6f79877d" | |
| 18 | } | |
| 19 | } |
corpus/formatted-insertion/native-cell/reverse/source.json created+8| ... | ... | @@ -0,0 +1,8 @@ |
| 1 | [ | |
| 2 | { | |
| 3 | "path": "synthetic.one", | |
| 4 | "bytes": 27800, | |
| 5 | "sha256": "2d01da4a2c8a0cba582d97460b708c77eca38617f9103f4a3cc9eea33f0e0351", | |
| 6 | "mtime_ns": 1788842844345306887 | |
| 7 | } | |
| 8 | ] |
corpus/formatted-insertion/native-cell/reverse/teardown.json created+1| ... | ... | @@ -0,0 +1 @@ |
| 1 | {"absent": true} |
corpus/formatted-insertion/native-cell/ui/before-read/af1af4b8987109ce1e335e538910fb3860b7c57eb3b6110a06aa2114e06d69a7.attachment created+1| ... | ... | @@ -0,0 +1 @@ |
| 1 | ../../../../append/round-01/native/append-01-complex/read/af1af4b8987109ce1e335e538910fb3860b7c57eb3b6110a06aa2114e06d69a7.attachment | |
| \ No newline at end of file |
corpus/formatted-insertion/native-cell/ui/before-read/environment.json created+7| ... | ... | @@ -0,0 +1,7 @@ |
| 1 | { | |
| 2 | "powershell": "5.1.14409.1005", | |
| 3 | "schema": "xs2010", | |
| 4 | "hostname": "ONE-M6-1DC21C3F", | |
| 5 | "cold": true, | |
| 6 | "onenote": "14.0.4763.1000" | |
| 7 | } |
corpus/formatted-insertion/native-cell/ui/before-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="{9335E9A4-2BB5-44D1-BA50-B989AA6E0C31}{1}{B0}" path="C:\one-tests\runs\capture\notebook" lastModifiedTime="2026-09-08T05:17:48.000Z" color="#B49EDE"><one:Section name="synthetic" ID="{7E619436-410B-0C9C-22EE-6EC96252B880}{1}{B0}" path="C:\one-tests\runs\capture\notebook\synthetic.one" lastModifiedTime="2026-09-08T05:17:48.000Z" color="#8AA8E4"><one:Page ID="{522867B0-C8C0-4F8D-A589-C6589E6AA49F}{1}{B0}" name="Fictitious: café, 東京, مرحبا" dateTime="2026-09-05T05:06:54.000Z" lastModifiedTime="2026-09-08T05:17:48.000Z" pageLevel="1"/></one:Section></one:Notebook> |
corpus/formatted-insertion/native-cell/ui/before-read/page-000.xml created+21| ... | ... | @@ -0,0 +1,21 @@ |
| 1 | <?xml version="1.0"?> | |
| 2 | <one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{522867B0-C8C0-4F8D-A589-C6589E6AA49F}{1}{B0}" name="Fictitious: café, 東京, مرحبا" dateTime="2026-09-05T05:06:54.000Z" lastModifiedTime="2026-09-08T05:17:48.000Z" pageLevel="1" lang="en-US"><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Outline author="snow" authorInitials="S" lastModifiedBy="snow" lastModifiedByInitials="S" lastModifiedTime="2026-09-05T05:06:56.000Z" objectID="{35E4CF0C-83B5-4C3B-AA7B-4A8361F641FE}{10}{B0}"><one:Position x="36.0" y="14.40000057220459" z="0"/><one:Size width="127.5136947631836" height="14.30000114440918"/><one:OEChildren><one:OE creationTime="2026-09-05T05:06:55.000Z" lastModifiedTime="2026-09-05T05:06:56.000Z" objectID="{35E4CF0C-83B5-4C3B-AA7B-4A8361F641FE}{11}{B0}" alignment="left" quickStyleIndex="0" style="font-size:11.0pt;color:#1F4E79"><one:T><![CDATA[<span | |
| 3 | style='font-weight:bold;font-family:Calibri' lang=en-US>Fictitious: café, </span><span | |
| 4 | style='font-weight:bold;font-family:SimSun' lang=en-US>東京</span><span | |
| 5 | style='font-weight:bold;font-family:Calibri' lang=en-US>, </span><span | |
| 6 | style='font-weight:bold;font-family:Arial;direction:rtl;unicode-bidi:embed' | |
| 7 | lang=ar-SA>مرحبا</span>]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="snow" authorInitials="S" lastModifiedBy="snow" lastModifiedByInitials="S" lastModifiedTime="2026-09-05T05:06:57.000Z" objectID="{63541319-30E0-4666-B0CD-C80BC5FAA5B7}{10}{B0}"><one:Position x="144.0" y="96.0" z="1"/><one:Size width="167.0449523925781" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-05T05:06:57.000Z" lastModifiedTime="2026-09-05T05:06:57.000Z" objectID="{63541319-30E0-4666-B0CD-C80BC5FAA5B7}{11}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Fictitious positioned outline.]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="snow" authorInitials="S" lastModifiedBy="snow" lastModifiedByInitials="S" lastModifiedTime="2026-09-05T05:06:58.000Z" objectID="{5E7D7B96-D67A-4FC8-86BD-63FF2997ED39}{10}{B0}"><one:Position x="144.0" y="192.0" z="2"/><one:Size width="72.0" height="0.750005722045898"/><one:OEChildren><one:OE creationTime="2026-09-05T05:06:58.000Z" lastModifiedTime="2026-09-05T05:06:58.000Z" objectID="{5E7D7B96-D67A-4FC8-86BD-63FF2997ED39}{11}{B0}" alignment="left"><one:Image format="png" originalPageNumber="0"><one:Data>iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAusB9Y9J1uoA | |
| 8 | AAAASUVORK5CYII=</one:Data></one:Image></one:OE></one:OEChildren></one:Outline><one:Outline author="snow" authorInitials="S" lastModifiedBy="snow" lastModifiedByInitials="S" lastModifiedTime="2026-09-05T05:06:59.000Z" objectID="{DB6763F6-1002-4C0E-A310-04011D46220A}{10}{B0}"><one:Position x="264.0" y="192.0" z="3"/><one:Size width="72.00001525878906" height="63.0"/><one:OEChildren><one:OE creationTime="2026-09-05T05:06:59.000Z" lastModifiedTime="2026-09-05T05:06:59.000Z" objectID="{DB6763F6-1002-4C0E-A310-04011D46220A}{11}{B0}" alignment="left"><one:InsertedFile pathCache="C:\Users\clover\AppData\Local\Microsoft\OneNote\14.0\OneNoteOfflineCache_Files\458001d8-0f1e-451f-81cb-621828fc0b39.txt" pathSource="C:\one-tests\runs\20260905-05\assets\fictitious-attachment.txt" preferredName="fictitious-attachment.txt"/></one:OE></one:OEChildren></one:Outline><one:Outline author="snow" authorInitials="S" lastModifiedBy="snow" lastModifiedByInitials="S" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{F5B81AA6-7192-478E-BC18-E6543515D94C}{10}{B0}"><one:Position x="144.0" y="312.0" z="4"/><one:Size width="182.6545715332031" height="50.55070495605469"/><one:OEChildren><one:OE creationTime="2026-09-05T05:07:00.000Z" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{F5B81AA6-7192-478E-BC18-E6543515D94C}{11}{B0}" alignment="left"><one:Table bordersVisible="true" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{F5B81AA6-7192-478E-BC18-E6543515D94C}{12}{B0}"><one:Columns><one:Column index="0" width="129.3788909912109"/><one:Column index="1" width="45.14567184448242"/></one:Columns><one:Row objectID="{F5B81AA6-7192-478E-BC18-E6543515D94C}{13}{B0}" lastModifiedTime="2026-09-08T04:47:24.000Z"><one:Cell lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{F5B81AA6-7192-478E-BC18-E6543515D94C}{14}{B0}" lastModifiedByInitials="S"><one:OEChildren><one:OE creationTime="2026-09-05T05:07:00.000Z" lastModifiedTime="2026-09-05T05:07:00.000Z" objectID="{F5B81AA6-7192-478E-BC18-E6543515D94C}{17}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Left cell]]></one:T></one:OE><one:OE author="Rich author" lastModifiedBy="Rich author" creationTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{5F18EBB1-FBEF-079C-2689-78693371A9D4}{1}{B0}" alignment="left"><one:T><![CDATA[<span style='font-weight:bold; | |
| 9 | text-decoration:underline;font-family:Calibri;font-size:11.0pt'>Bold</span><span | |
| 10 | style='font-family:Calibri;font-size:11.0pt'> </span><span style='font-family: | |
| 11 | Arial;font-size:13.5pt'>&#129408;</span><span style='font-family:Calibri; | |
| 12 | font-size:11.0pt'> </span><span style='font-style:italic;text-decoration:line-through; | |
| 13 | font-family:Calibri;font-size:11.0pt'>italic</span><span style='font-family: | |
| 14 | Calibri;font-size:11.0pt'> </span><span style='vertical-align:super;font-family: | |
| 15 | Calibri;font-size:11.0pt'>é</span><span style='font-family:Calibri;font-size: | |
| 16 | 11.0pt'> </span><span style='font-family:Calibri;font-size:11.0pt;color:#0C2238; | |
| 17 | background:yellow;mso-highlight:yellow'>color</span><span style='font-family: | |
| 18 | Calibri;font-size:11.0pt'> </span><span style='vertical-align:sub;font-family: | |
| 19 | Calibri;font-size:11.0pt'>東京</span><span style='font-family:Calibri;font-size: | |
| 20 | 11.0pt'><br> | |
| 21 | End</span>]]></one:T></one:OE></one:OEChildren></one:Cell><one:Cell lastModifiedTime="2026-09-05T05:07:00.000Z" objectID="{F5B81AA6-7192-478E-BC18-E6543515D94C}{22}{B0}" lastModifiedByInitials="S"><one:OEChildren><one:OE creationTime="2026-09-05T05:07:00.000Z" lastModifiedTime="2026-09-05T05:07:00.000Z" objectID="{F5B81AA6-7192-478E-BC18-E6543515D94C}{25}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Right cell]]></one:T></one:OE></one:OEChildren></one:Cell></one:Row></one:Table></one:OE></one:OEChildren></one:Outline></one:Page> |
corpus/formatted-insertion/native-cell/ui/before-read/payloads.json created+10| ... | ... | @@ -0,0 +1,10 @@ |
| 1 | [ | |
| 2 | { | |
| 3 | "sha256": "af1af4b8987109ce1e335e538910fb3860b7c57eb3b6110a06aa2114e06d69a7", | |
| 4 | "name": "fictitious-attachment.txt", | |
| 5 | "object": "{DB6763F6-1002-4C0E-A310-04011D46220A}{11}{B0}", | |
| 6 | "kind": "InsertedFile", | |
| 7 | "page": "{522867B0-C8C0-4F8D-A589-C6589E6AA49F}{1}{B0}", | |
| 8 | "bytes": 43 | |
| 9 | } | |
| 10 | ] | |
| \ No newline at end of file |
corpus/formatted-insertion/native-cell/ui/edit.ahk created+10| ... | ... | @@ -0,0 +1,10 @@ |
| 1 | #Requires AutoHotkey v2.0 | |
| 2 | OnError((exception, mode) => (FileAppend(exception.Message, "**"), ExitApp(1))) | |
| 3 | hwnd := WinExist("ahk_class Framework::CFrame ahk_exe ONENOTE.EXE") | |
| 4 | if !hwnd | |
| 5 | throw Error("OneNote window is missing") | |
| 6 | WinActivate(hwnd) | |
| 7 | if !WinWaitActive(hwnd,, 5) | |
| 8 | throw Error("OneNote window is not active") | |
| 9 | Send "{Left}" | |
| 10 | SendText "UI " |
corpus/formatted-insertion/native-cell/ui/edit.json created+13| ... | ... | @@ -0,0 +1,13 @@ |
| 1 | { | |
| 2 | "exit": 0, | |
| 3 | "stdout": "", | |
| 4 | "stderr": "", | |
| 5 | "w": 1280, | |
| 6 | "h": 720, | |
| 7 | "error": null, | |
| 8 | "win": { | |
| 9 | "title": "Fictitious: caf\u00e9, \u6771\u4eac, \u0645\u0631\u062d\u0628\u0627 - Microsoft OneNote", | |
| 10 | "class": "Framework::CFrame", | |
| 11 | "dialog": false | |
| 12 | } | |
| 13 | } | |
| \ No newline at end of file |
corpus/formatted-insertion/native-cell/ui/edit.png created| Binary files /dev/null and b/corpus/formatted-insertion/native-cell/ui/edit.png differ |
corpus/formatted-insertion/native-cell/ui/navigate.ahk created+20| ... | ... | @@ -0,0 +1,20 @@ |
| 1 | #Requires AutoHotkey v2.0 | |
| 2 | OnError((exception, mode) => (FileAppend(exception.Message, "**"), ExitApp(1))) | |
| 3 | dm := Buffer(220, 0) | |
| 4 | NumPut("UShort", 220, dm, 68) | |
| 5 | if !DllCall("EnumDisplaySettingsW", "Ptr", 0, "UInt", 0xFFFFFFFF, "Ptr", dm) | |
| 6 | throw Error("Cannot inspect display mode") | |
| 7 | NumPut("UInt", NumGet(dm, 72, "UInt") | 0x180000, dm, 72) | |
| 8 | NumPut("UInt", 1280, dm, 172) | |
| 9 | NumPut("UInt", 720, dm, 176) | |
| 10 | if DllCall("ChangeDisplaySettingsW", "Ptr", dm, "UInt", 0, "Int") != 0 | |
| 11 | throw Error("Display mode rejected") | |
| 12 | app := ComObject("OneNote.Application") | |
| 13 | app.NavigateTo("{522867B0-C8C0-4F8D-A589-C6589E6AA49F}{1}{B0}", "{5F18EBB1-FBEF-079C-2689-78693371A9D4}{1}{B0}", false) | |
| 14 | hwnd := WinWait("ahk_class Framework::CFrame ahk_exe ONENOTE.EXE",, 10) | |
| 15 | if !hwnd | |
| 16 | throw Error("OneNote window did not appear") | |
| 17 | WinMaximize(hwnd) | |
| 18 | WinActivate(hwnd) | |
| 19 | if !WinWaitActive(hwnd,, 10) | |
| 20 | throw Error("OneNote window did not become active") |
corpus/formatted-insertion/native-cell/ui/navigate.json created+13| ... | ... | @@ -0,0 +1,13 @@ |
| 1 | { | |
| 2 | "exit": 0, | |
| 3 | "stdout": "", | |
| 4 | "stderr": "", | |
| 5 | "w": 1280, | |
| 6 | "h": 720, | |
| 7 | "error": null, | |
| 8 | "win": { | |
| 9 | "title": "Fictitious: caf\u00e9, \u6771\u4eac, \u0645\u0631\u062d\u0628\u0627 - Microsoft OneNote", | |
| 10 | "class": "Framework::CFrame", | |
| 11 | "dialog": false | |
| 12 | } | |
| 13 | } | |
| \ No newline at end of file |
corpus/formatted-insertion/native-cell/ui/notebook/synthetic.one created| Binary files /dev/null and b/corpus/formatted-insertion/native-cell/ui/notebook/synthetic.one differ |
corpus/formatted-insertion/native-cell/ui/read/af1af4b8987109ce1e335e538910fb3860b7c57eb3b6110a06aa2114e06d69a7.attachment created+1| ... | ... | @@ -0,0 +1 @@ |
| 1 | ../../../../append/round-01/native/append-01-complex/read/af1af4b8987109ce1e335e538910fb3860b7c57eb3b6110a06aa2114e06d69a7.attachment | |
| \ No newline at end of file |
corpus/formatted-insertion/native-cell/ui/read/environment.json created+7| ... | ... | @@ -0,0 +1,7 @@ |
| 1 | { | |
| 2 | "powershell": "5.1.14409.1005", | |
| 3 | "schema": "xs2010", | |
| 4 | "hostname": "ONE-M6-1DC21C3F", | |
| 5 | "cold": false, | |
| 6 | "onenote": "14.0.4763.1000" | |
| 7 | } |
corpus/formatted-insertion/native-cell/ui/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="{9335E9A4-2BB5-44D1-BA50-B989AA6E0C31}{1}{B0}" path="C:\one-tests\runs\capture\notebook" lastModifiedTime="2026-09-08T05:21:04.000Z" color="#B49EDE" isCurrentlyViewed="true"><one:Section name="synthetic" ID="{7E619436-410B-0C9C-22EE-6EC96252B880}{1}{B0}" path="C:\one-tests\runs\capture\notebook\synthetic.one" lastModifiedTime="2026-09-08T05:21:04.000Z" color="#8AA8E4" isCurrentlyViewed="true"><one:Page ID="{522867B0-C8C0-4F8D-A589-C6589E6AA49F}{1}{B0}" name="Fictitious: café, 東京, مرحبا" dateTime="2026-09-05T05:06:54.000Z" lastModifiedTime="2026-09-08T05:20:59.000Z" pageLevel="1" isCurrentlyViewed="true"/></one:Section></one:Notebook> |
corpus/formatted-insertion/native-cell/ui/read/page-000.xml created+21| ... | ... | @@ -0,0 +1,21 @@ |
| 1 | <?xml version="1.0"?> | |
| 2 | <one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{522867B0-C8C0-4F8D-A589-C6589E6AA49F}{1}{B0}" name="Fictitious: café, 東京, مرحبا" dateTime="2026-09-05T05:06:54.000Z" lastModifiedTime="2026-09-08T05:21:45.000Z" pageLevel="1" isCurrentlyViewed="true" lang="en-US"><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Outline author="snow" authorInitials="S" lastModifiedBy="snow" lastModifiedByInitials="S" lastModifiedTime="2026-09-05T05:06:56.000Z" objectID="{35E4CF0C-83B5-4C3B-AA7B-4A8361F641FE}{10}{B0}"><one:Position x="36.0" y="14.40000057220459" z="0"/><one:Size width="127.5136947631836" height="14.30000114440918"/><one:OEChildren><one:OE creationTime="2026-09-05T05:06:55.000Z" lastModifiedTime="2026-09-05T05:06:56.000Z" objectID="{35E4CF0C-83B5-4C3B-AA7B-4A8361F641FE}{11}{B0}" alignment="left" quickStyleIndex="0" style="font-size:11.0pt;color:#1F4E79"><one:T><![CDATA[<span | |
| 3 | style='font-weight:bold;font-family:Calibri' lang=en-US>Fictitious: café, </span><span | |
| 4 | style='font-weight:bold;font-family:SimSun' lang=en-US>東京</span><span | |
| 5 | style='font-weight:bold;font-family:Calibri' lang=en-US>, </span><span | |
| 6 | style='font-weight:bold;font-family:Arial;direction:rtl;unicode-bidi:embed' | |
| 7 | lang=ar-SA>مرحبا</span>]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="snow" authorInitials="S" lastModifiedBy="snow" lastModifiedByInitials="S" lastModifiedTime="2026-09-08T05:20:08.000Z" objectID="{63541319-30E0-4666-B0CD-C80BC5FAA5B7}{10}{B0}"><one:Position x="144.0" y="96.0" z="1"/><one:Size width="167.0449523925781" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-05T05:06:57.000Z" lastModifiedTime="2026-09-08T05:20:08.000Z" objectID="{63541319-30E0-4666-B0CD-C80BC5FAA5B7}{11}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Fictitious positioned outline.]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="snow" authorInitials="S" lastModifiedBy="snow" lastModifiedByInitials="S" lastModifiedTime="2026-09-05T05:06:58.000Z" objectID="{5E7D7B96-D67A-4FC8-86BD-63FF2997ED39}{10}{B0}"><one:Position x="144.0" y="192.0" z="2"/><one:Size width="72.0" height="0.750005722045898"/><one:OEChildren><one:OE creationTime="2026-09-05T05:06:58.000Z" lastModifiedTime="2026-09-05T05:06:58.000Z" objectID="{5E7D7B96-D67A-4FC8-86BD-63FF2997ED39}{11}{B0}" alignment="left"><one:Image format="png" originalPageNumber="0"><one:Data>iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAusB9Y9J1uoA | |
| 8 | AAAASUVORK5CYII=</one:Data></one:Image></one:OE></one:OEChildren></one:Outline><one:Outline author="snow" authorInitials="S" lastModifiedBy="snow" lastModifiedByInitials="S" lastModifiedTime="2026-09-05T05:06:59.000Z" objectID="{DB6763F6-1002-4C0E-A310-04011D46220A}{10}{B0}"><one:Position x="264.0" y="192.0" z="3"/><one:Size width="72.00001525878906" height="63.0"/><one:OEChildren><one:OE creationTime="2026-09-05T05:06:59.000Z" lastModifiedTime="2026-09-05T05:06:59.000Z" objectID="{DB6763F6-1002-4C0E-A310-04011D46220A}{11}{B0}" alignment="left"><one:InsertedFile pathCache="C:\Users\clover\AppData\Local\Microsoft\OneNote\14.0\OneNoteOfflineCache_Files\458001d8-0f1e-451f-81cb-621828fc0b39.txt" pathSource="C:\one-tests\runs\20260905-05\assets\fictitious-attachment.txt" preferredName="fictitious-attachment.txt"/></one:OE></one:OEChildren></one:Outline><one:Outline author="snow" authorInitials="S" lastModifiedBy="snow" lastModifiedByInitials="S" lastModifiedTime="2026-09-08T05:20:59.000Z" objectID="{F5B81AA6-7192-478E-BC18-E6543515D94C}{10}{B0}"><one:Position x="144.0" y="312.0" z="4"/><one:Size width="195.2552032470703" height="50.55070495605469"/><one:OEChildren><one:OE creationTime="2026-09-05T05:07:00.000Z" lastModifiedTime="2026-09-08T05:20:59.000Z" objectID="{F5B81AA6-7192-478E-BC18-E6543515D94C}{11}{B0}" alignment="left"><one:Table bordersVisible="true" lastModifiedTime="2026-09-08T05:20:59.000Z" objectID="{F5B81AA6-7192-478E-BC18-E6543515D94C}{12}{B0}"><one:Columns><one:Column index="0" width="141.9795227050781"/><one:Column index="1" width="45.14567184448242"/></one:Columns><one:Row objectID="{F5B81AA6-7192-478E-BC18-E6543515D94C}{13}{B0}" lastModifiedTime="2026-09-08T05:20:59.000Z"><one:Cell lastModifiedTime="2026-09-08T05:20:59.000Z" objectID="{F5B81AA6-7192-478E-BC18-E6543515D94C}{14}{B0}" lastModifiedByInitials="S"><one:OEChildren><one:OE creationTime="2026-09-05T05:07:00.000Z" lastModifiedTime="2026-09-08T05:20:08.000Z" objectID="{F5B81AA6-7192-478E-BC18-E6543515D94C}{17}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Left cell]]></one:T></one:OE><one:OE author="Rich author" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T05:20:59.000Z" objectID="{5F18EBB1-FBEF-079C-2689-78693371A9D4}{1}{B0}" alignment="left"><one:T><![CDATA[<span style='font-weight:bold; | |
| 9 | text-decoration:underline;font-family:Calibri;font-size:11.0pt'>UI Bold</span><span | |
| 10 | style='font-family:Calibri;font-size:11.0pt'> </span><span style='font-family: | |
| 11 | Arial;font-size:13.5pt'>&#129408;</span><span style='font-family:Calibri; | |
| 12 | font-size:11.0pt'> </span><span style='font-style:italic;text-decoration:line-through; | |
| 13 | font-family:Calibri;font-size:11.0pt'>italic</span><span style='font-family: | |
| 14 | Calibri;font-size:11.0pt'> </span><span style='vertical-align:super;font-family: | |
| 15 | Calibri;font-size:11.0pt'>é</span><span style='font-family:Calibri;font-size: | |
| 16 | 11.0pt'> </span><span style='font-family:Calibri;font-size:11.0pt;color:#0C2238; | |
| 17 | background:yellow;mso-highlight:yellow'>color</span><span style='font-family: | |
| 18 | Calibri;font-size:11.0pt'> </span><span style='vertical-align:sub;font-family: | |
| 19 | Calibri;font-size:11.0pt'>東京</span><span style='font-family:Calibri;font-size: | |
| 20 | 11.0pt'><br> | |
| 21 | End</span>]]></one:T></one:OE></one:OEChildren></one:Cell><one:Cell lastModifiedTime="2026-09-08T05:20:08.000Z" objectID="{F5B81AA6-7192-478E-BC18-E6543515D94C}{22}{B0}" lastModifiedByInitials="S"><one:OEChildren><one:OE creationTime="2026-09-05T05:07:00.000Z" lastModifiedTime="2026-09-08T05:20:08.000Z" objectID="{F5B81AA6-7192-478E-BC18-E6543515D94C}{25}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Right cell]]></one:T></one:OE></one:OEChildren></one:Cell></one:Row></one:Table></one:OE></one:OEChildren></one:Outline></one:Page> |
corpus/formatted-insertion/native-cell/ui/read/payloads.json created+10| ... | ... | @@ -0,0 +1,10 @@ |
| 1 | [ | |
| 2 | { | |
| 3 | "sha256": "af1af4b8987109ce1e335e538910fb3860b7c57eb3b6110a06aa2114e06d69a7", | |
| 4 | "name": "fictitious-attachment.txt", | |
| 5 | "object": "{DB6763F6-1002-4C0E-A310-04011D46220A}{11}{B0}", | |
| 6 | "kind": "InsertedFile", | |
| 7 | "page": "{522867B0-C8C0-4F8D-A589-C6589E6AA49F}{1}{B0}", | |
| 8 | "bytes": 43 | |
| 9 | } | |
| 10 | ] | |
| \ No newline at end of file |
corpus/formatted-insertion/native-cell/ui/run.json created+18| ... | ... | @@ -0,0 +1,18 @@ |
| 1 | { | |
| 2 | "notebook": "/Users/clo/dev/one/corpus/formatted-insertion/native-cell/candidate", | |
| 3 | "expected_pages": 1, | |
| 4 | "author": null, | |
| 5 | "author_timeout_seconds": 600, | |
| 6 | "inspect": true, | |
| 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": "df4244a18ab3e9c21083b8df61b08b863e8cce0ec4bf0c9cd742a8ee6f79877d" | |
| 17 | } | |
| 18 | } |
corpus/formatted-insertion/native-cell/ui/source.json created+8| ... | ... | @@ -0,0 +1,8 @@ |
| 1 | [ | |
| 2 | { | |
| 3 | "path": "synthetic.one", | |
| 4 | "bytes": 27800, | |
| 5 | "sha256": "2d01da4a2c8a0cba582d97460b708c77eca38617f9103f4a3cc9eea33f0e0351", | |
| 6 | "mtime_ns": 1788844254905915500 | |
| 7 | } | |
| 8 | ] |
corpus/formatted-insertion/native-cell/ui/teardown.json created+1| ... | ... | @@ -0,0 +1 @@ |
| 1 | {"absent": true} |
corpus/formatted-insertion/native-paragraph/candidate/synthetic.one created| Binary files /dev/null and b/corpus/formatted-insertion/native-paragraph/candidate/synthetic.one differ |
corpus/formatted-insertion/native-paragraph/cold/notebook/synthetic.one created| Binary files /dev/null and b/corpus/formatted-insertion/native-paragraph/cold/notebook/synthetic.one differ |
corpus/formatted-insertion/native-paragraph/cold/read/environment.json created+7| ... | ... | @@ -0,0 +1,7 @@ |
| 1 | { | |
| 2 | "powershell": "5.1.14409.1005", | |
| 3 | "schema": "xs2010", | |
| 4 | "hostname": "ONE-M6-3A29493B", | |
| 5 | "cold": true, | |
| 6 | "onenote": "14.0.4763.1000" | |
| 7 | } |
corpus/formatted-insertion/native-paragraph/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="{94392AC7-D3ED-4D43-A6F0-56DDDBDC19F9}{1}{B0}" path="C:\one-tests\runs\capture\notebook" lastModifiedTime="2026-09-08T04:52:44.000Z" color="#B49EDE"><one:Section name="synthetic" ID="{D26EFE31-822A-0358-00F3-8768C1B3CD8C}{1}{B0}" path="C:\one-tests\runs\capture\notebook\synthetic.one" lastModifiedTime="2026-09-08T04:52:44.000Z" color="#8AA8E4"><one:Page ID="{FE270DB7-0BE1-4049-8794-2FF93D8BD193}{1}{B0}" name="Bold 🦀 italic é color 東京" dateTime="2026-09-05T05:06:54.000Z" lastModifiedTime="2026-09-08T04:52:44.000Z" pageLevel="1"/></one:Section></one:Notebook> |
corpus/formatted-insertion/native-paragraph/cold/read/page-000.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="{FE270DB7-0BE1-4049-8794-2FF93D8BD193}{1}{B0}" name="Bold 🦀 italic é color 東京" dateTime="2026-09-05T05:06:54.000Z" lastModifiedTime="2026-09-08T04:52:44.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="{99EBA50B-4094-43FF-8866-A322C21734F2}{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="{9E8E0DFC-B3E9-08F5-3832-6028097C4604}{1}{B0}" alignment="left"><one:T><![CDATA[<span style='font-weight:bold; | |
| 3 | text-decoration:underline;font-family:Calibri;font-size:11.0pt'>Bold</span><span | |
| 4 | style='font-family:Calibri;font-size:11.0pt'> </span><span style='font-family: | |
| 5 | Arial;font-size:13.5pt'>&#129408;</span><span style='font-family:Calibri; | |
| 6 | font-size:11.0pt'> </span><span style='font-style:italic;text-decoration:line-through; | |
| 7 | font-family:Calibri;font-size:11.0pt'>italic</span><span style='font-family: | |
| 8 | Calibri;font-size:11.0pt'> </span><span style='vertical-align:super;font-family: | |
| 9 | Calibri;font-size:11.0pt'>é</span><span style='font-family:Calibri;font-size: | |
| 10 | 11.0pt'> </span><span style='font-family:Calibri;font-size:11.0pt;color:#0C2238; | |
| 11 | background:yellow;mso-highlight:yellow'>color</span><span style='font-family: | |
| 12 | Calibri;font-size:11.0pt'> </span><span style='vertical-align:sub;font-family: | |
| 13 | Calibri;font-size:11.0pt'>東京</span><span style='font-family:Calibri;font-size: | |
| 14 | 11.0pt'><br> | |
| 15 | End</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="{99EBA50B-4094-43FF-8866-A322C21734F2}{11}{B0}" alignment="left" quickStyleIndex="0" style="font-size:11.0pt;color:#1F4E79"><one:T><![CDATA[<span | |
| 16 | style='font-weight:bold;font-family:Calibri' lang=en-US>Fictitious: café, </span><span | |
| 17 | style='font-weight:bold;font-family:SimSun' lang=en-US>東京</span><span | |
| 18 | style='font-weight:bold;font-family:Calibri' lang=en-US>, </span><span | |
| 19 | style='font-weight:bold;font-family:Arial;direction:rtl;unicode-bidi:embed' | |
| 20 | lang=ar-SA>مرحبا</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page> |
corpus/formatted-insertion/native-paragraph/cold/read/payloads.json created+3| ... | ... | @@ -0,0 +1,3 @@ |
| 1 | [ | |
| 2 | ||
| 3 | ] | |
| \ No newline at end of file |
corpus/formatted-insertion/native-paragraph/cold/run.json created+18| ... | ... | @@ -0,0 +1,18 @@ |
| 1 | { | |
| 2 | "notebook": "/Users/clo/dev/one/evidence/m10/formatted-insertion-isolated/native-paragraph", | |
| 3 | "expected_pages": 1, | |
| 4 | "author": null, | |
| 5 | "author_timeout_seconds": 600, | |
| 6 | "inspect": false, | |
| 7 | "collect_notebook": true, | |
| 8 | "base": { | |
| 9 | "file": "win7-office-base.qcow2", | |
| 10 | "format": "qcow2", | |
| 11 | "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346", | |
| 12 | "virtual_size": 68719476736 | |
| 13 | }, | |
| 14 | "scripts": { | |
| 15 | "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331", | |
| 16 | "read.ps1": "086789e467779add0fc071ad8c524c2b02d3d0d609aea4a41f3128cadba371e8" | |
| 17 | } | |
| 18 | } |
corpus/formatted-insertion/native-paragraph/cold/source.json created+8| ... | ... | @@ -0,0 +1,8 @@ |
| 1 | [ | |
| 2 | { | |
| 3 | "path": "synthetic.one", | |
| 4 | "bytes": 18672, | |
| 5 | "sha256": "202823512283be980b6a139adcf5f4f369d15f17d60ed7b23f9f2289513aa4e9", | |
| 6 | "mtime_ns": 1788842844336692559 | |
| 7 | } | |
| 8 | ] |
corpus/formatted-insertion/native-paragraph/cold/teardown.json created+1| ... | ... | @@ -0,0 +1 @@ |
| 1 | {"absent": true} |
corpus/formatted-insertion/native-paragraph/reverse/control-before.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="{1B7A8098-ED5A-422F-B4CC-AF462C16CB92}{1}{B0}" name="Bold 🦀 italic é color 東京" dateTime="2026-09-05T05:06:54.000Z" lastModifiedTime="2026-09-08T05:00:42.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="{7CB62824-A62F-4199-BB3E-239DD38A2EF3}{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="{7BD380D3-5552-0A93-0B6A-E09718E15C05}{1}{B0}" alignment="left"><one:T><![CDATA[<span style='font-weight:bold; | |
| 3 | text-decoration:underline;font-family:Calibri;font-size:11.0pt'>Bold</span><span | |
| 4 | style='font-family:Calibri;font-size:11.0pt'> </span><span style='font-family: | |
| 5 | Arial;font-size:13.5pt'>&#129408;</span><span style='font-family:Calibri; | |
| 6 | font-size:11.0pt'> </span><span style='font-style:italic;text-decoration:line-through; | |
| 7 | font-family:Calibri;font-size:11.0pt'>italic</span><span style='font-family: | |
| 8 | Calibri;font-size:11.0pt'> </span><span style='vertical-align:super;font-family: | |
| 9 | Calibri;font-size:11.0pt'>é</span><span style='font-family:Calibri;font-size: | |
| 10 | 11.0pt'> </span><span style='font-family:Calibri;font-size:11.0pt;color:#0C2238; | |
| 11 | background:yellow;mso-highlight:yellow'>color</span><span style='font-family: | |
| 12 | Calibri;font-size:11.0pt'> </span><span style='vertical-align:sub;font-family: | |
| 13 | Calibri;font-size:11.0pt'>東京</span><span style='font-family:Calibri;font-size: | |
| 14 | 11.0pt'><br> | |
| 15 | End</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="{7CB62824-A62F-4199-BB3E-239DD38A2EF3}{11}{B0}" alignment="left" quickStyleIndex="0" style="font-size:11.0pt;color:#1F4E79"><one:T><![CDATA[<span | |
| 16 | style='font-weight:bold;font-family:Calibri' lang=en-US>Fictitious: café, </span><span | |
| 17 | style='font-weight:bold;font-family:SimSun' lang=en-US>東京</span><span | |
| 18 | style='font-weight:bold;font-family:Calibri' lang=en-US>, </span><span | |
| 19 | style='font-weight:bold;font-family:Arial;direction:rtl;unicode-bidi:embed' | |
| 20 | lang=ar-SA>مرحبا</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page> |
corpus/formatted-insertion/native-paragraph/reverse/control-update.xml created+19| ... | ... | @@ -0,0 +1,19 @@ |
| 1 | <one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{1B7A8098-ED5A-422F-B4CC-AF462C16CB92}{1}{B0}"><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0" xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" /><one:Outline author="Rich author" lastModifiedBy="Rich author" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{7CB62824-A62F-4199-BB3E-239DD38A2EF3}{10}{B0}" xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote"><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="{7BD380D3-5552-0A93-0B6A-E09718E15C05}{1}{B0}" alignment="left"><one:T><![CDATA[<span style='font-weight:bold; | |
| 2 | text-decoration:underline;font-family:Calibri;font-size:11.0pt'>Bold</span><span | |
| 3 | style='font-family:Calibri;font-size:11.0pt'> </span><span style='font-family: | |
| 4 | Arial;font-size:13.5pt'>&#129408;</span><span style='font-family:Calibri; | |
| 5 | font-size:11.0pt'> </span><span style='font-style:italic;text-decoration:line-through; | |
| 6 | font-family:Calibri;font-size:11.0pt'>italic</span><span style='font-family: | |
| 7 | Calibri;font-size:11.0pt'> </span><span style='vertical-align:super;font-family: | |
| 8 | Calibri;font-size:11.0pt'>é</span><span style='font-family:Calibri;font-size: | |
| 9 | 11.0pt'> </span><span style='font-family:Calibri;font-size:11.0pt;color:#0C2238; | |
| 10 | background:yellow;mso-highlight:yellow'>color</span><span style='font-family: | |
| 11 | Calibri;font-size:11.0pt'> </span><span style='vertical-align:sub;font-family: | |
| 12 | Calibri;font-size:11.0pt'>東京</span><span style='font-family:Calibri;font-size: | |
| 13 | 11.0pt'><br> | |
| 14 | End</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="{7CB62824-A62F-4199-BB3E-239DD38A2EF3}{11}{B0}" alignment="left" quickStyleIndex="0" style="font-size:11.0pt;color:#1F4E79"><one:T><![CDATA[<span | |
| 15 | style='font-weight:bold;font-family:Calibri' lang=en-US>Fictitious: café, </span><span | |
| 16 | style='font-weight:bold;font-family:SimSun' lang=en-US>東京</span><span | |
| 17 | style='font-weight:bold;font-family:Calibri' lang=en-US>, </span><span | |
| 18 | style='font-weight:bold;font-family:Arial;direction:rtl;unicode-bidi:embed' | |
| 19 | lang=ar-SA>مرحبا</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page> | |
| \ No newline at end of file |
corpus/formatted-insertion/native-paragraph/reverse/edit-before.xml created+22| ... | ... | @@ -0,0 +1,22 @@ |
| 1 | <?xml version="1.0"?> | |
| 2 | <one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{1B7A8098-ED5A-422F-B4CC-AF462C16CB92}{1}{B0}" name="Bold 🦀 italic é color 東京" dateTime="2026-09-05T05:06:54.000Z" lastModifiedTime="2026-09-08T05:00:50.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="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T05:00:50.000Z" objectID="{7CB62824-A62F-4199-BB3E-239DD38A2EF3}{10}{B0}"><one:Position x="36.0" y="14.40000057220459" z="0"/><one:Size width="127.5136947631836" height="43.3349609375"/><one:OEChildren><one:OE creationTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T05:00:50.000Z" objectID="{7BD380D3-5552-0A93-0B6A-E09718E15C05}{1}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span style='font-weight:bold; | |
| 3 | text-decoration:underline;font-family:Calibri;font-size:11.0pt' lang=en-US>Bold</span><span | |
| 4 | style='font-family:Calibri;font-size:11.0pt' lang=en-US> </span><span | |
| 5 | style='font-family:Calibri;font-size:13.5pt' lang=en-US>&#129408;</span><span | |
| 6 | style='font-family:Calibri;font-size:11.0pt' lang=x-none> </span><span | |
| 7 | style='font-style:italic;text-decoration:line-through;font-family:Calibri; | |
| 8 | font-size:11.0pt' lang=x-none>italic</span><span style='font-family:Calibri; | |
| 9 | font-size:11.0pt' lang=x-none> </span><span style='vertical-align:super; | |
| 10 | font-family:Calibri;font-size:11.0pt' lang=x-none>é</span><span | |
| 11 | style='font-family:Calibri;font-size:11.0pt' lang=x-none> </span><span | |
| 12 | style='font-family:Calibri;font-size:11.0pt;color:#0C2238;background:yellow; | |
| 13 | mso-highlight:yellow' lang=x-none>color</span><span style='font-family:Calibri; | |
| 14 | font-size:11.0pt' lang=x-none> </span><span style='vertical-align:sub; | |
| 15 | font-family:SimSun;font-size:11.0pt' lang=x-none>東京</span><span | |
| 16 | style='font-family:Calibri;font-size:11.0pt' lang=en-US><br> | |
| 17 | End</span>]]></one:T></one:OE><one:OE author="snow" authorInitials="S" creationTime="2026-09-05T05:06:55.000Z" lastModifiedTime="2026-09-08T05:00:50.000Z" objectID="{7CB62824-A62F-4199-BB3E-239DD38A2EF3}{11}{B0}" alignment="left" quickStyleIndex="0" style="font-size:11.0pt;color:#1F4E79"><one:T><![CDATA[<span | |
| 18 | style='font-weight:bold;font-family:Calibri' lang=en-US>Fictitious: café, </span><span | |
| 19 | style='font-weight:bold;font-family:SimSun' lang=en-US>東京</span><span | |
| 20 | style='font-weight:bold;font-family:Calibri' lang=en-US>, </span><span | |
| 21 | style='font-weight:bold;font-family:Arial;direction:rtl;unicode-bidi:embed' | |
| 22 | lang=ar-SA>مرحبا</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page> |
corpus/formatted-insertion/native-paragraph/reverse/edit-update.xml created+21| ... | ... | @@ -0,0 +1,21 @@ |
| 1 | <one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{1B7A8098-ED5A-422F-B4CC-AF462C16CB92}{1}{B0}"><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0" xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" /><one:Outline author="Rich author" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T05:00:50.000Z" objectID="{7CB62824-A62F-4199-BB3E-239DD38A2EF3}{10}{B0}" xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote"><one:Position x="36.0" y="14.40000057220459" z="0" /><one:Size width="127.5136947631836" height="43.3349609375" /><one:OEChildren><one:OE creationTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T05:00:50.000Z" objectID="{7BD380D3-5552-0A93-0B6A-E09718E15C05}{1}{B0}" alignment="left" quickStyleIndex="0"><one:T>&lt;span style='font-weight:bold; | |
| 2 | text-decoration:underline;font-family:Calibri;font-size:11.0pt' lang=en-US&gt;Native Bold&lt;/span&gt;&lt;span | |
| 3 | style='font-family:Calibri;font-size:11.0pt' lang=en-US&gt; &lt;/span&gt;&lt;span | |
| 4 | style='font-family:Calibri;font-size:13.5pt' lang=en-US&gt;&amp;#129408;&lt;/span&gt;&lt;span | |
| 5 | style='font-family:Calibri;font-size:11.0pt' lang=x-none&gt; &lt;/span&gt;&lt;span | |
| 6 | style='font-style:italic;text-decoration:line-through;font-family:Calibri; | |
| 7 | font-size:11.0pt' lang=x-none&gt;italic&lt;/span&gt;&lt;span style='font-family:Calibri; | |
| 8 | font-size:11.0pt' lang=x-none&gt; &lt;/span&gt;&lt;span style='vertical-align:super; | |
| 9 | font-family:Calibri;font-size:11.0pt' lang=x-none&gt;é&lt;/span&gt;&lt;span | |
| 10 | style='font-family:Calibri;font-size:11.0pt' lang=x-none&gt; &lt;/span&gt;&lt;span | |
| 11 | style='font-family:Calibri;font-size:11.0pt;color:#0C2238;background:yellow; | |
| 12 | mso-highlight:yellow' lang=x-none&gt;color&lt;/span&gt;&lt;span style='font-family:Calibri; | |
| 13 | font-size:11.0pt' lang=x-none&gt; &lt;/span&gt;&lt;span style='vertical-align:sub; | |
| 14 | font-family:SimSun;font-size:11.0pt' lang=x-none&gt;東京&lt;/span&gt;&lt;span | |
| 15 | style='font-family:Calibri;font-size:11.0pt' lang=en-US&gt;&lt;br&gt; | |
| 16 | End&lt;/span&gt;</one:T></one:OE><one:OE author="snow" authorInitials="S" creationTime="2026-09-05T05:06:55.000Z" lastModifiedTime="2026-09-08T05:00:50.000Z" objectID="{7CB62824-A62F-4199-BB3E-239DD38A2EF3}{11}{B0}" alignment="left" quickStyleIndex="0" style="font-size:11.0pt;color:#1F4E79"><one:T><![CDATA[<span | |
| 17 | style='font-weight:bold;font-family:Calibri' lang=en-US>Fictitious: café, </span><span | |
| 18 | style='font-weight:bold;font-family:SimSun' lang=en-US>東京</span><span | |
| 19 | style='font-weight:bold;font-family:Calibri' lang=en-US>, </span><span | |
| 20 | style='font-weight:bold;font-family:Arial;direction:rtl;unicode-bidi:embed' | |
| 21 | lang=ar-SA>مرحبا</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page> | |
| \ No newline at end of file |
corpus/formatted-insertion/native-paragraph/reverse/notebook/synthetic.one created| Binary files /dev/null and b/corpus/formatted-insertion/native-paragraph/reverse/notebook/synthetic.one differ |
corpus/formatted-insertion/native-paragraph/reverse/read/environment.json created+7| ... | ... | @@ -0,0 +1,7 @@ |
| 1 | { | |
| 2 | "powershell": "5.1.14409.1005", | |
| 3 | "schema": "xs2010", | |
| 4 | "hostname": "ONE-M6-E17E9EEE", | |
| 5 | "cold": false, | |
| 6 | "onenote": "14.0.4763.1000" | |
| 7 | } |
corpus/formatted-insertion/native-paragraph/reverse/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="{643EE131-1C57-48AE-A2E3-79A6724309F6}{1}{B0}" path="C:\one-tests\runs\capture\notebook" lastModifiedTime="2026-09-08T05:02:00.000Z" color="#B49EDE"><one:Section name="synthetic" ID="{F55CE73E-E1CC-04D6-18B6-DF16A6EFDE4A}{1}{B0}" path="C:\one-tests\runs\capture\notebook\synthetic.one" lastModifiedTime="2026-09-08T05:02:00.000Z" color="#8AA8E4"><one:Page ID="{D91514B8-6807-47C7-9FD1-77875AD7C255}{1}{B0}" name="Native Bold 🦀 italic é color 東京" dateTime="2026-09-05T05:06:54.000Z" lastModifiedTime="2026-09-08T05:02:00.000Z" pageLevel="1"/></one:Section></one:Notebook> |
corpus/formatted-insertion/native-paragraph/reverse/read/page-000.xml created+22| ... | ... | @@ -0,0 +1,22 @@ |
| 1 | <?xml version="1.0"?> | |
| 2 | <one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{D91514B8-6807-47C7-9FD1-77875AD7C255}{1}{B0}" name="Native Bold 🦀 italic é color 東京" dateTime="2026-09-05T05:06:54.000Z" lastModifiedTime="2026-09-08T05:02: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="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T05:00:50.000Z" objectID="{BED9BC04-2372-4471-9023-FB5CA54B2734}{10}{B0}"><one:Position x="36.0" y="14.40000057220459" z="0"/><one:Size width="127.5136947631836" height="57.63496017456055"/><one:OEChildren><one:OE creationTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T05:00:50.000Z" objectID="{B9BC14F3-D00F-0F7B-2077-38566E2055C2}{1}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span style='font-weight:bold; | |
| 3 | text-decoration:underline;font-family:Calibri;font-size:11.0pt' lang=en-US>Native Bold</span><span | |
| 4 | style='font-family:Calibri;font-size:11.0pt' lang=en-US> </span><span | |
| 5 | style='font-family:Calibri;font-size:13.5pt' lang=en-US>&#129408;</span><span | |
| 6 | style='font-family:Calibri;font-size:11.0pt' lang=x-none> </span><span | |
| 7 | style='font-style:italic;text-decoration:line-through;font-family:Calibri; | |
| 8 | font-size:11.0pt' lang=x-none>italic</span><span style='font-family:Calibri; | |
| 9 | font-size:11.0pt' lang=x-none> </span><span style='vertical-align:super; | |
| 10 | font-family:Calibri;font-size:11.0pt' lang=x-none>é</span><span | |
| 11 | style='font-family:Calibri;font-size:11.0pt' lang=x-none> </span><span | |
| 12 | style='font-family:Calibri;font-size:11.0pt;color:#0C2238;background:yellow; | |
| 13 | mso-highlight:yellow' lang=x-none>color</span><span style='font-family:Calibri; | |
| 14 | font-size:11.0pt' lang=x-none> </span><span style='vertical-align:sub; | |
| 15 | font-family:SimSun;font-size:11.0pt' lang=x-none>東京</span><span | |
| 16 | style='font-family:Calibri;font-size:11.0pt' lang=en-US><br> | |
| 17 | End</span>]]></one:T></one:OE><one:OE author="snow" authorInitials="S" creationTime="2026-09-05T05:06:55.000Z" lastModifiedTime="2026-09-08T05:00:50.000Z" objectID="{BED9BC04-2372-4471-9023-FB5CA54B2734}{11}{B0}" alignment="left" quickStyleIndex="0" style="font-size:11.0pt;color:#1F4E79"><one:T><![CDATA[<span | |
| 18 | style='font-weight:bold;font-family:Calibri' lang=en-US>Fictitious: café, </span><span | |
| 19 | style='font-weight:bold;font-family:SimSun' lang=en-US>東京</span><span | |
| 20 | style='font-weight:bold;font-family:Calibri' lang=en-US>, </span><span | |
| 21 | style='font-weight:bold;font-family:Arial;direction:rtl;unicode-bidi:embed' | |
| 22 | lang=ar-SA>مرحبا</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page> |
corpus/formatted-insertion/native-paragraph/reverse/read/payloads.json created+3| ... | ... | @@ -0,0 +1,3 @@ |
| 1 | [ | |
| 2 | ||
| 3 | ] | |
| \ No newline at end of file |
corpus/formatted-insertion/native-paragraph/reverse/reverse-verification.json created+5| ... | ... | @@ -0,0 +1,5 @@ |
| 1 | { | |
| 2 | "paragraphs": 2, | |
| 3 | "characters": 63, | |
| 4 | "exact_native_character_styles_after_control": true | |
| 5 | } |
corpus/formatted-insertion/native-paragraph/reverse/run.json created+19| ... | ... | @@ -0,0 +1,19 @@ |
| 1 | { | |
| 2 | "notebook": "/Users/clo/dev/one/evidence/m10/formatted-insertion-isolated/native-paragraph", | |
| 3 | "expected_pages": 1, | |
| 4 | "author": "evidence/m10/formatted-reverse-controlled.ps1", | |
| 5 | "author_timeout_seconds": 600, | |
| 6 | "inspect": false, | |
| 7 | "collect_notebook": true, | |
| 8 | "base": { | |
| 9 | "file": "win7-office-base.qcow2", | |
| 10 | "format": "qcow2", | |
| 11 | "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346", | |
| 12 | "virtual_size": 68719476736 | |
| 13 | }, | |
| 14 | "scripts": { | |
| 15 | "author.ps1": "4362d0ba551eb00b2eca1c5563d76352469f85d3981155bf2682c159a03ddedb", | |
| 16 | "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331", | |
| 17 | "read.ps1": "086789e467779add0fc071ad8c524c2b02d3d0d609aea4a41f3128cadba371e8" | |
| 18 | } | |
| 19 | } |
corpus/formatted-insertion/native-paragraph/reverse/source.json created+8| ... | ... | @@ -0,0 +1,8 @@ |
| 1 | [ | |
| 2 | { | |
| 3 | "path": "synthetic.one", | |
| 4 | "bytes": 18672, | |
| 5 | "sha256": "202823512283be980b6a139adcf5f4f369d15f17d60ed7b23f9f2289513aa4e9", | |
| 6 | "mtime_ns": 1788842844336692559 | |
| 7 | } | |
| 8 | ] |
corpus/formatted-insertion/native-paragraph/reverse/teardown.json created+1| ... | ... | @@ -0,0 +1 @@ |
| 1 | {"absent": true} |
corpus/formatted-insertion/outline/candidate/synthetic.one created| Binary files /dev/null and b/corpus/formatted-insertion/outline/candidate/synthetic.one differ |
corpus/formatted-insertion/outline/cold/notebook/synthetic.one created| Binary files /dev/null and b/corpus/formatted-insertion/outline/cold/notebook/synthetic.one differ |
corpus/formatted-insertion/outline/cold/read/environment.json created+7| ... | ... | @@ -0,0 +1,7 @@ |
| 1 | { | |
| 2 | "powershell": "5.1.14409.1005", | |
| 3 | "schema": "xs2010", | |
| 4 | "hostname": "ONE-M6-21E15CBC", | |
| 5 | "cold": true, | |
| 6 | "onenote": "14.0.4763.1000" | |
| 7 | } |
corpus/formatted-insertion/outline/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="{FD9B23E7-27DD-42DA-B9EB-7D7C38E67AC6}{1}{B0}" path="C:\one-tests\runs\capture\notebook" lastModifiedTime="2026-09-08T04:53:07.000Z" color="#B49EDE"><one:Section name="synthetic" ID="{BF888060-5534-0692-36B6-7F1D9A763BAE}{1}{B0}" path="C:\one-tests\runs\capture\notebook\synthetic.one" lastModifiedTime="2026-09-08T04:53:07.000Z" color="#8AA8E4"><one:Page ID="{66EE590B-EB2A-0597-072E-737ABAC4421C}{1}{B0}" name="Original" dateTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T04:52:56.000Z" pageLevel="1"/></one:Section></one:Notebook> |
corpus/formatted-insertion/outline/cold/read/page-000.xml created+15| ... | ... | @@ -0,0 +1,15 @@ |
| 1 | <?xml version="1.0"?> | |
| 2 | <one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{66EE590B-EB2A-0597-072E-737ABAC4421C}{1}{B0}" name="Original" dateTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T04:52:56.000Z" pageLevel="1" lang="en-US"><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Outline style="font-family:Calibri;font-size:11.0pt" author="Author" lastModifiedBy="Author" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{BF888060-5534-0692-36B6-7F1D9A763BAE}{23}{B0}"><one:Position x="36.0" y="36.0" z="0"/><one:Size width="101.66748046875" height="13.4277172088623"/><one:Indents><one:Indent level="0" indent="0.0"/></one:Indents><one:OEChildren><one:OE creationTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{BF888060-5534-0692-36B6-7F1D9A763BAE}{24}{B0}" alignment="left"><one:T><![CDATA[Original]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="Rich author" lastModifiedBy="Rich author" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{0ECA1708-B745-031C-291B-F034D71F2A92}{1}{B0}"><one:Position x="72.0" y="144.0" z="1"/><one:Size width="468.0" height="28.60299110412598"/><one:Indents><one:Indent level="0" indent="0.0"/></one:Indents><one:OEChildren><one:OE creationTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{0ECA1708-B745-031C-291B-F034D71F2A92}{3}{B0}" alignment="left"><one:T><![CDATA[<span style='font-weight:bold; | |
| 3 | text-decoration:underline;font-family:Calibri;font-size:11.0pt'>Bold</span><span | |
| 4 | style='font-family:Calibri;font-size:11.0pt'> </span><span style='font-family: | |
| 5 | Arial;font-size:13.5pt'>&#129408;</span><span style='font-family:Calibri; | |
| 6 | font-size:11.0pt'> </span><span style='font-style:italic;text-decoration:line-through; | |
| 7 | font-family:Calibri;font-size:11.0pt'>italic</span><span style='font-family: | |
| 8 | Calibri;font-size:11.0pt'> </span><span style='vertical-align:super;font-family: | |
| 9 | Calibri;font-size:11.0pt'>é</span><span style='font-family:Calibri;font-size: | |
| 10 | 11.0pt'> </span><span style='font-family:Calibri;font-size:11.0pt;color:#0C2238; | |
| 11 | background:yellow;mso-highlight:yellow'>color</span><span style='font-family: | |
| 12 | Calibri;font-size:11.0pt'> </span><span style='vertical-align:sub;font-family: | |
| 13 | Calibri;font-size:11.0pt'>東京</span><span style='font-family:Calibri;font-size: | |
| 14 | 11.0pt'><br> | |
| 15 | End</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page> |
corpus/formatted-insertion/outline/cold/read/payloads.json created+3| ... | ... | @@ -0,0 +1,3 @@ |
| 1 | [ | |
| 2 | ||
| 3 | ] | |
| \ No newline at end of file |
corpus/formatted-insertion/outline/cold/run.json created+18| ... | ... | @@ -0,0 +1,18 @@ |
| 1 | { | |
| 2 | "notebook": "/Users/clo/dev/one/evidence/m10/formatted-insertion-isolated/outline", | |
| 3 | "expected_pages": 1, | |
| 4 | "author": null, | |
| 5 | "author_timeout_seconds": 600, | |
| 6 | "inspect": false, | |
| 7 | "collect_notebook": true, | |
| 8 | "base": { | |
| 9 | "file": "win7-office-base.qcow2", | |
| 10 | "format": "qcow2", | |
| 11 | "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346", | |
| 12 | "virtual_size": 68719476736 | |
| 13 | }, | |
| 14 | "scripts": { | |
| 15 | "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331", | |
| 16 | "read.ps1": "086789e467779add0fc071ad8c524c2b02d3d0d609aea4a41f3128cadba371e8" | |
| 17 | } | |
| 18 | } |
corpus/formatted-insertion/outline/cold/source.json created+8| ... | ... | @@ -0,0 +1,8 @@ |
| 1 | [ | |
| 2 | { | |
| 3 | "path": "synthetic.one", | |
| 4 | "bytes": 7776, | |
| 5 | "sha256": "76f6b743caa9dc2b5ab342d6e6a742125ecbcd0ca2372062b42acbd08b5ebb4c", | |
| 6 | "mtime_ns": 1788842844332249915 | |
| 7 | } | |
| 8 | ] |
corpus/formatted-insertion/outline/cold/teardown.json created+1| ... | ... | @@ -0,0 +1 @@ |
| 1 | {"absent": true} |
corpus/formatted-insertion/outline/reverse/control-before.xml created+15| ... | ... | @@ -0,0 +1,15 @@ |
| 1 | <?xml version="1.0"?> | |
| 2 | <one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{1ADF0406-C7FD-03BA-0A13-462805F7226D}{1}{B0}" name="Original" dateTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T05:04:19.000Z" pageLevel="1" lang="en-US"><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Outline style="font-family:Calibri;font-size:11.0pt" author="Author" lastModifiedBy="Author" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{C3B9DD6D-79E3-00BF-3B8B-4A4F25455BDF}{23}{B0}"><one:Position x="36.0" y="36.0" z="0"/><one:Size width="101.66748046875" height="13.4277172088623"/><one:Indents><one:Indent level="0" indent="0.0"/></one:Indents><one:OEChildren><one:OE creationTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{C3B9DD6D-79E3-00BF-3B8B-4A4F25455BDF}{24}{B0}" alignment="left"><one:T><![CDATA[Original]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="Rich author" lastModifiedBy="Rich author" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{72FB4A05-9B92-0531-2426-C566682C4AE3}{1}{B0}"><one:Position x="72.0" y="144.0" z="1"/><one:Size width="468.0" height="28.60299110412598"/><one:Indents><one:Indent level="0" indent="0.0"/></one:Indents><one:OEChildren><one:OE creationTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{72FB4A05-9B92-0531-2426-C566682C4AE3}{3}{B0}" alignment="left"><one:T><![CDATA[<span style='font-weight:bold; | |
| 3 | text-decoration:underline;font-family:Calibri;font-size:11.0pt'>Bold</span><span | |
| 4 | style='font-family:Calibri;font-size:11.0pt'> </span><span style='font-family: | |
| 5 | Arial;font-size:13.5pt'>&#129408;</span><span style='font-family:Calibri; | |
| 6 | font-size:11.0pt'> </span><span style='font-style:italic;text-decoration:line-through; | |
| 7 | font-family:Calibri;font-size:11.0pt'>italic</span><span style='font-family: | |
| 8 | Calibri;font-size:11.0pt'> </span><span style='vertical-align:super;font-family: | |
| 9 | Calibri;font-size:11.0pt'>é</span><span style='font-family:Calibri;font-size: | |
| 10 | 11.0pt'> </span><span style='font-family:Calibri;font-size:11.0pt;color:#0C2238; | |
| 11 | background:yellow;mso-highlight:yellow'>color</span><span style='font-family: | |
| 12 | Calibri;font-size:11.0pt'> </span><span style='vertical-align:sub;font-family: | |
| 13 | Calibri;font-size:11.0pt'>東京</span><span style='font-family:Calibri;font-size: | |
| 14 | 11.0pt'><br> | |
| 15 | End</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page> |
corpus/formatted-insertion/outline/reverse/control-update.xml created+14| ... | ... | @@ -0,0 +1,14 @@ |
| 1 | <one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{1ADF0406-C7FD-03BA-0A13-462805F7226D}{1}{B0}"><one:Outline author="Rich author" lastModifiedBy="Rich author" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{72FB4A05-9B92-0531-2426-C566682C4AE3}{1}{B0}" xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote"><one:Position x="72.0" y="144.0" z="1" /><one:Size width="468.0" height="28.60299110412598" /><one:Indents><one:Indent level="0" indent="0.0" /></one:Indents><one:OEChildren><one:OE creationTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{72FB4A05-9B92-0531-2426-C566682C4AE3}{3}{B0}" alignment="left"><one:T><![CDATA[<span style='font-weight:bold; | |
| 2 | text-decoration:underline;font-family:Calibri;font-size:11.0pt'>Bold</span><span | |
| 3 | style='font-family:Calibri;font-size:11.0pt'> </span><span style='font-family: | |
| 4 | Arial;font-size:13.5pt'>&#129408;</span><span style='font-family:Calibri; | |
| 5 | font-size:11.0pt'> </span><span style='font-style:italic;text-decoration:line-through; | |
| 6 | font-family:Calibri;font-size:11.0pt'>italic</span><span style='font-family: | |
| 7 | Calibri;font-size:11.0pt'> </span><span style='vertical-align:super;font-family: | |
| 8 | Calibri;font-size:11.0pt'>é</span><span style='font-family:Calibri;font-size: | |
| 9 | 11.0pt'> </span><span style='font-family:Calibri;font-size:11.0pt;color:#0C2238; | |
| 10 | background:yellow;mso-highlight:yellow'>color</span><span style='font-family: | |
| 11 | Calibri;font-size:11.0pt'> </span><span style='vertical-align:sub;font-family: | |
| 12 | Calibri;font-size:11.0pt'>東京</span><span style='font-family:Calibri;font-size: | |
| 13 | 11.0pt'><br> | |
| 14 | End</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page> | |
| \ No newline at end of file |
corpus/formatted-insertion/outline/reverse/edit-before.xml created+17| ... | ... | @@ -0,0 +1,17 @@ |
| 1 | <?xml version="1.0"?> | |
| 2 | <one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{1ADF0406-C7FD-03BA-0A13-462805F7226D}{1}{B0}" name="Original" dateTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T05:04:19.000Z" pageLevel="1" lang="en-US"><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Outline style="font-family:Calibri;font-size:11.0pt" author="Author" lastModifiedBy="Author" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{C3B9DD6D-79E3-00BF-3B8B-4A4F25455BDF}{23}{B0}"><one:Position x="36.0" y="36.0" z="1"/><one:Size width="101.66748046875" height="13.4277172088623"/><one:Indents><one:Indent level="0" indent="0.0"/></one:Indents><one:OEChildren><one:OE creationTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{C3B9DD6D-79E3-00BF-3B8B-4A4F25455BDF}{24}{B0}" alignment="left"><one:T><![CDATA[Original]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="Rich author" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T05:04:27.000Z" objectID="{72FB4A05-9B92-0531-2426-C566682C4AE3}{1}{B0}"><one:Position x="72.0" y="144.0" z="0"/><one:Size width="468.0" height="29.90723991394043"/><one:Indents><one:Indent level="0" indent="0.0"/></one:Indents><one:OEChildren><one:OE creationTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T05:04:27.000Z" objectID="{72FB4A05-9B92-0531-2426-C566682C4AE3}{3}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span style='font-weight:bold; | |
| 3 | text-decoration:underline;font-family:Calibri;font-size:11.0pt' lang=en-US>Bold</span><span | |
| 4 | style='font-family:Calibri;font-size:11.0pt' lang=en-US> </span><span | |
| 5 | style='font-family:Calibri;font-size:13.5pt' lang=en-US>&#129408;</span><span | |
| 6 | style='font-family:Calibri;font-size:11.0pt' lang=x-none> </span><span | |
| 7 | style='font-style:italic;text-decoration:line-through;font-family:Calibri; | |
| 8 | font-size:11.0pt' lang=x-none>italic</span><span style='font-family:Calibri; | |
| 9 | font-size:11.0pt' lang=x-none> </span><span style='vertical-align:super; | |
| 10 | font-family:Calibri;font-size:11.0pt' lang=x-none>é</span><span | |
| 11 | style='font-family:Calibri;font-size:11.0pt' lang=x-none> </span><span | |
| 12 | style='font-family:Calibri;font-size:11.0pt;color:#0C2238;background:yellow; | |
| 13 | mso-highlight:yellow' lang=x-none>color</span><span style='font-family:Calibri; | |
| 14 | font-size:11.0pt' lang=x-none> </span><span style='vertical-align:sub; | |
| 15 | font-family:SimSun;font-size:11.0pt' lang=x-none>東京</span><span | |
| 16 | style='font-family:Calibri;font-size:11.0pt' lang=en-US><br> | |
| 17 | End</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page> |
corpus/formatted-insertion/outline/reverse/edit-update.xml created+16| ... | ... | @@ -0,0 +1,16 @@ |
| 1 | <one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{1ADF0406-C7FD-03BA-0A13-462805F7226D}{1}{B0}"><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0" xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" /><one:Outline author="Rich author" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T05:04:27.000Z" objectID="{72FB4A05-9B92-0531-2426-C566682C4AE3}{1}{B0}" xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote"><one:Position x="72.0" y="144.0" z="0" /><one:Size width="468.0" height="29.90723991394043" /><one:Indents><one:Indent level="0" indent="0.0" /></one:Indents><one:OEChildren><one:OE creationTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T05:04:27.000Z" objectID="{72FB4A05-9B92-0531-2426-C566682C4AE3}{3}{B0}" alignment="left" quickStyleIndex="0"><one:T>&lt;span style='font-weight:bold; | |
| 2 | text-decoration:underline;font-family:Calibri;font-size:11.0pt' lang=en-US&gt;Native Bold&lt;/span&gt;&lt;span | |
| 3 | style='font-family:Calibri;font-size:11.0pt' lang=en-US&gt; &lt;/span&gt;&lt;span | |
| 4 | style='font-family:Calibri;font-size:13.5pt' lang=en-US&gt;&amp;#129408;&lt;/span&gt;&lt;span | |
| 5 | style='font-family:Calibri;font-size:11.0pt' lang=x-none&gt; &lt;/span&gt;&lt;span | |
| 6 | style='font-style:italic;text-decoration:line-through;font-family:Calibri; | |
| 7 | font-size:11.0pt' lang=x-none&gt;italic&lt;/span&gt;&lt;span style='font-family:Calibri; | |
| 8 | font-size:11.0pt' lang=x-none&gt; &lt;/span&gt;&lt;span style='vertical-align:super; | |
| 9 | font-family:Calibri;font-size:11.0pt' lang=x-none&gt;é&lt;/span&gt;&lt;span | |
| 10 | style='font-family:Calibri;font-size:11.0pt' lang=x-none&gt; &lt;/span&gt;&lt;span | |
| 11 | style='font-family:Calibri;font-size:11.0pt;color:#0C2238;background:yellow; | |
| 12 | mso-highlight:yellow' lang=x-none&gt;color&lt;/span&gt;&lt;span style='font-family:Calibri; | |
| 13 | font-size:11.0pt' lang=x-none&gt; &lt;/span&gt;&lt;span style='vertical-align:sub; | |
| 14 | font-family:SimSun;font-size:11.0pt' lang=x-none&gt;東京&lt;/span&gt;&lt;span | |
| 15 | style='font-family:Calibri;font-size:11.0pt' lang=en-US&gt;&lt;br&gt; | |
| 16 | End&lt;/span&gt;</one:T></one:OE></one:OEChildren></one:Outline></one:Page> | |
| \ No newline at end of file |
corpus/formatted-insertion/outline/reverse/notebook/synthetic.one created| Binary files /dev/null and b/corpus/formatted-insertion/outline/reverse/notebook/synthetic.one differ |
corpus/formatted-insertion/outline/reverse/read/environment.json created+7| ... | ... | @@ -0,0 +1,7 @@ |
| 1 | { | |
| 2 | "powershell": "5.1.14409.1005", | |
| 3 | "schema": "xs2010", | |
| 4 | "hostname": "ONE-M6-129C20F7", | |
| 5 | "cold": false, | |
| 6 | "onenote": "14.0.4763.1000" | |
| 7 | } |
corpus/formatted-insertion/outline/reverse/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="{ACF9AA90-C944-4381-97F0-8AAE2DE5FAEF}{1}{B0}" path="C:\one-tests\runs\capture\notebook" lastModifiedTime="2026-09-08T05:04:40.000Z" color="#B49EDE"><one:Section name="synthetic" ID="{D32B2090-2B9E-07F2-3796-17BEC4F45F8E}{1}{B0}" path="C:\one-tests\runs\capture\notebook\synthetic.one" lastModifiedTime="2026-09-08T05:04:40.000Z" color="#8AA8E4"><one:Page ID="{0A4DF9FB-9580-04F7-060E-1BD9E446263C}{1}{B0}" name="Original" dateTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T05:04:40.000Z" pageLevel="1"/></one:Section></one:Notebook> |
corpus/formatted-insertion/outline/reverse/read/page-000.xml created+17| ... | ... | @@ -0,0 +1,17 @@ |
| 1 | <?xml version="1.0"?> | |
| 2 | <one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{0A4DF9FB-9580-04F7-060E-1BD9E446263C}{1}{B0}" name="Original" dateTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T05:04:40.000Z" pageLevel="1" lang="en-US"><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Outline style="font-family:Calibri;font-size:11.0pt" author="Author" lastModifiedBy="Author" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{D32B2090-2B9E-07F2-3796-17BEC4F45F8E}{23}{B0}"><one:Position x="36.0" y="36.0" z="1"/><one:Size width="101.66748046875" height="13.4277172088623"/><one:Indents><one:Indent level="0" indent="0.0"/></one:Indents><one:OEChildren><one:OE creationTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T04:47:24.000Z" objectID="{D32B2090-2B9E-07F2-3796-17BEC4F45F8E}{24}{B0}" alignment="left"><one:T><![CDATA[Original]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="Rich author" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T05:04:27.000Z" objectID="{6269B7F8-C9EF-027C-283B-9897899D4EB2}{1}{B0}"><one:Position x="72.0" y="144.0" z="0"/><one:Size width="468.0" height="29.90723991394043"/><one:Indents><one:Indent level="0" indent="0.0"/></one:Indents><one:OEChildren><one:OE creationTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-08T05:04:27.000Z" objectID="{6269B7F8-C9EF-027C-283B-9897899D4EB2}{3}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span style='font-weight:bold; | |
| 3 | text-decoration:underline;font-family:Calibri;font-size:11.0pt' lang=en-US>Native Bold</span><span | |
| 4 | style='font-family:Calibri;font-size:11.0pt' lang=en-US> </span><span | |
| 5 | style='font-family:Calibri;font-size:13.5pt' lang=en-US>&#129408;</span><span | |
| 6 | style='font-family:Calibri;font-size:11.0pt' lang=x-none> </span><span | |
| 7 | style='font-style:italic;text-decoration:line-through;font-family:Calibri; | |
| 8 | font-size:11.0pt' lang=x-none>italic</span><span style='font-family:Calibri; | |
| 9 | font-size:11.0pt' lang=x-none> </span><span style='vertical-align:super; | |
| 10 | font-family:Calibri;font-size:11.0pt' lang=x-none>é</span><span | |
| 11 | style='font-family:Calibri;font-size:11.0pt' lang=x-none> </span><span | |
| 12 | style='font-family:Calibri;font-size:11.0pt;color:#0C2238;background:yellow; | |
| 13 | mso-highlight:yellow' lang=x-none>color</span><span style='font-family:Calibri; | |
| 14 | font-size:11.0pt' lang=x-none> </span><span style='vertical-align:sub; | |
| 15 | font-family:SimSun;font-size:11.0pt' lang=x-none>東京</span><span | |
| 16 | style='font-family:Calibri;font-size:11.0pt' lang=en-US><br> | |
| 17 | End</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page> |
corpus/formatted-insertion/outline/reverse/read/payloads.json created+3| ... | ... | @@ -0,0 +1,3 @@ |
| 1 | [ | |
| 2 | ||
| 3 | ] | |
| \ No newline at end of file |
corpus/formatted-insertion/outline/reverse/reverse-verification.json created+5| ... | ... | @@ -0,0 +1,5 @@ |
| 1 | { | |
| 2 | "paragraphs": 2, | |
| 3 | "characters": 44, | |
| 4 | "exact_native_character_styles_after_control": true | |
| 5 | } |
corpus/formatted-insertion/outline/reverse/run.json created+19| ... | ... | @@ -0,0 +1,19 @@ |
| 1 | { | |
| 2 | "notebook": "/Users/clo/dev/one/evidence/m10/formatted-insertion-isolated/outline", | |
| 3 | "expected_pages": 1, | |
| 4 | "author": "evidence/m10/formatted-reverse-controlled.ps1", | |
| 5 | "author_timeout_seconds": 600, | |
| 6 | "inspect": false, | |
| 7 | "collect_notebook": true, | |
| 8 | "base": { | |
| 9 | "file": "win7-office-base.qcow2", | |
| 10 | "format": "qcow2", | |
| 11 | "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346", | |
| 12 | "virtual_size": 68719476736 | |
| 13 | }, | |
| 14 | "scripts": { | |
| 15 | "author.ps1": "4362d0ba551eb00b2eca1c5563d76352469f85d3981155bf2682c159a03ddedb", | |
| 16 | "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331", | |
| 17 | "read.ps1": "086789e467779add0fc071ad8c524c2b02d3d0d609aea4a41f3128cadba371e8" | |
| 18 | } | |
| 19 | } |
corpus/formatted-insertion/outline/reverse/source.json created+8| ... | ... | @@ -0,0 +1,8 @@ |
| 1 | [ | |
| 2 | { | |
| 3 | "path": "synthetic.one", | |
| 4 | "bytes": 7776, | |
| 5 | "sha256": "76f6b743caa9dc2b5ab342d6e6a742125ecbcd0ca2372062b42acbd08b5ebb4c", | |
| 6 | "mtime_ns": 1788842844332249915 | |
| 7 | } | |
| 8 | ] |
corpus/formatted-insertion/outline/reverse/teardown.json created+1| ... | ... | @@ -0,0 +1 @@ |
| 1 | {"absent": true} |
crates/onestore-offline/README.md+4-6| ... | ... | @@ -26,7 +26,8 @@ assert_eq!(pending.last().map(|edit| edit.id), local_id); |
| 26 | 26 | ``` |
| 27 | 27 | |
| 28 | 28 | `insert` accepts the core library's `Insertion` value and durably retains its |
| 29 | object identities. Keep that value across retries; its `text_object()` identifies | |
| 29 | intent identities. `Insertion::with_formatting` queues text and | |
| 30 | its styles as one intent and one publication. Keep that value across retries; its `text_object()` identifies | |
| 30 | 31 | the new text for subsequent offline edits. Pending entries expose |
| 31 | 32 | `Operation::Text(TextEdit)`, `Operation::Insert(Insertion)` or |
| 32 | 33 | `Operation::Format(FormatEdit)` through their |
| ... | ... | @@ -47,12 +48,9 @@ use onestore::{ExGuid, Insertion, TextAttribute}; |
| 47 | 48 | use onestore_offline::{EditStatus, Replica}; |
| 48 | 49 | # fn add_outline(cache: &Replica, space: ExGuid, page: ExGuid) |
| 49 | 50 | # -> Result<(), Box<dyn std::error::Error>> { |
| 50 | let outline = Insertion::outline(page, 144.0, 216.0, "Offline outline", "Author")?; | |
| 51 | let outline = Insertion::outline(page, 144.0, 216.0, "Offline outline", "Author")? | |
| 52 | .with_formatting(0..7, &[TextAttribute::Bold(true)])?; | |
| 51 | 53 | let id = cache.insert(&cache.snapshot()?, space, &outline)?; |
| 52 | cache.format( | |
| 53 | &cache.snapshot()?, space, outline.text_object(), 0..7, | |
| 54 | &[TextAttribute::Bold(true)], | |
| 55 | )?; | |
| 56 | 54 | if let Some(id) = id { |
| 57 | 55 | // A running worker may already have advanced this state. |
| 58 | 56 | match cache.status(id)? { |
crates/onestore-offline/examples/smb_offline_client.rs+8-1| ... | ... | @@ -301,7 +301,14 @@ fn queue_document( |
| 301 | 301 | &text, |
| 302 | 302 | "Offline document writer", |
| 303 | 303 | )? |
| 304 | }; | |
| 304 | } | |
| 305 | .with_formatting( | |
| 306 | 0..u32::try_from(text.encode_utf16().count())?, | |
| 307 | &[ | |
| 308 | TextAttribute::FontSize(13.5), | |
| 309 | TextAttribute::Color(Some([0x44, 0x55, 0x66])), | |
| 310 | ], | |
| 311 | )?; | |
| 305 | 312 | let parent = if operation.is_multiple_of(2) { |
| 306 | 313 | insertion.object() |
| 307 | 314 | } else { |
crates/onestore-offline/tests/cache.rs+14-1| ... | ... | @@ -609,7 +609,9 @@ fn twelve_local_clients_preserve_inserted_identities_and_dependent_edits() { |
| 609 | 609 | "Author", |
| 610 | 610 | ) |
| 611 | 611 | .unwrap() |
| 612 | }; | |
| 612 | } | |
| 613 | .with_formatting(0..6, &[onestore::TextAttribute::Italic(true)]) | |
| 614 | .unwrap(); | |
| 613 | 615 | loop { |
| 614 | 616 | assert!( |
| 615 | 617 | Instant::now() < deadline, |
| ... | ... | @@ -691,6 +693,17 @@ fn twelve_local_clients_preserve_inserted_identities_and_dependent_edits() { |
| 691 | 693 | format!("Edited Paragraph {client}:{sequence}") |
| 692 | 694 | }; |
| 693 | 695 | assert!(matches!(&v.nodes[id].kind,Kind::RichText{text,..} if *text==wanted)); |
| 696 | let runs = v.text_runs(*id).unwrap(); | |
| 697 | assert_eq!(runs[0].format.italic, Some(true)); | |
| 698 | assert_eq!( | |
| 699 | runs[0].text, | |
| 700 | if sequence == 0 { | |
| 701 | "Client" | |
| 702 | } else { | |
| 703 | "Edited Paragr" | |
| 704 | } | |
| 705 | ); | |
| 706 | assert!(runs[1..].iter().all(|run| run.format.italic != Some(true))); | |
| 694 | 707 | } |
| 695 | 708 | } |
| 696 | 709 | } |
crates/onestore-offline/tests/sync.rs+35-5| ... | ... | @@ -1736,8 +1736,10 @@ fn offline_insertions_survive_reopen_rebase_and_dependent_text_edits() { |
| 1736 | 1736 | let doc = Document::parse(&index).unwrap(); |
| 1737 | 1737 | let (_, page) = doc.pages().unwrap()[0]; |
| 1738 | 1738 | let cache = Replica::create(&path, &source).unwrap(); |
| 1739 | let outline = | |
| 1740 | Insertion::outline(page, 72.0, 144.0, "Offline outline", "Offline author").unwrap(); | |
| 1739 | let outline = Insertion::outline(page, 72.0, 144.0, "Offline outline", "Offline author") | |
| 1740 | .unwrap() | |
| 1741 | .with_formatting(0..7, &[onestore::TextAttribute::Italic(true)]) | |
| 1742 | .unwrap(); | |
| 1741 | 1743 | let first = cache.insert(&source, sid, &outline).unwrap().unwrap(); |
| 1742 | 1744 | let snapshot = cache.snapshot().unwrap(); |
| 1743 | 1745 | let paragraph = Insertion::paragraph( |
| ... | ... | @@ -1746,6 +1748,8 @@ fn offline_insertions_survive_reopen_rebase_and_dependent_text_edits() { |
| 1746 | 1748 | "Offline paragraph 🦀", |
| 1747 | 1749 | "Offline author", |
| 1748 | 1750 | ) |
| 1751 | .unwrap() | |
| 1752 | .with_formatting(8..17, &[onestore::TextAttribute::Bold(true)]) | |
| 1749 | 1753 | .unwrap(); |
| 1750 | 1754 | let second = cache.insert(&snapshot, sid, &paragraph).unwrap().unwrap(); |
| 1751 | 1755 | let third = cache |
| ... | ... | @@ -1786,6 +1790,12 @@ fn offline_insertions_survive_reopen_rebase_and_dependent_text_edits() { |
| 1786 | 1790 | ] { |
| 1787 | 1791 | assert!(matches!(&v.nodes[&id].kind,Kind::RichText{text,..} if text==wanted)); |
| 1788 | 1792 | } |
| 1793 | let outline_runs = v.text_runs(outline.text_object()).unwrap(); | |
| 1794 | assert_eq!(outline_runs[0].text, "Offline"); | |
| 1795 | assert_eq!(outline_runs[0].format.italic, Some(true)); | |
| 1796 | let runs = v.text_runs(paragraph.text_object()).unwrap(); | |
| 1797 | assert_eq!(runs[1].text, "paragraph"); | |
| 1798 | assert_eq!(runs[1].format.bold, Some(true)); | |
| 1789 | 1799 | assert_eq!( |
| 1790 | 1800 | v.nodes[&outline.object()].children.last(), |
| 1791 | 1801 | Some(&paragraph.object()) |
| ... | ... | @@ -1811,8 +1821,12 @@ fn uncertain_insertions_reconcile_the_original_revision_without_duplicate_object |
| 1811 | 1821 | let doc = Document::parse(&index).unwrap(); |
| 1812 | 1822 | let (sid, page) = doc.pages().unwrap()[0]; |
| 1813 | 1823 | let cache = Replica::create(&path, &source).unwrap(); |
| 1814 | let insertion = | |
| 1815 | Insertion::outline(page, 144.0, 144.0, "Uncertain insertion", "Author").unwrap(); | |
| 1824 | let insertion = Insertion::outline(page, 144.0, 144.0, "Uncertain insertion", "Author") | |
| 1825 | .unwrap() | |
| 1826 | .with_formatting(0..9, &[onestore::TextAttribute::Bold(true)]) | |
| 1827 | .unwrap() | |
| 1828 | .with_formatting(10..19, &[onestore::TextAttribute::Italic(true)]) | |
| 1829 | .unwrap(); | |
| 1816 | 1830 | let id = cache.insert(&source, sid, &insertion).unwrap().unwrap(); |
| 1817 | 1831 | let local = cache.snapshot().unwrap(); |
| 1818 | 1832 | let mut server = Server::new(&source); |
| ... | ... | @@ -1860,6 +1874,15 @@ fn uncertain_insertions_reconcile_the_original_revision_without_duplicate_object |
| 1860 | 1874 | let v = &s.revisions[&s.contexts[&ExGuid::default()]]; |
| 1861 | 1875 | assert_eq!(v.nodes.values().filter(|node|matches!(&node.kind,Kind::RichText{text,..} if text=="Uncertain insertion")).count(),1); |
| 1862 | 1876 | assert!(v.nodes.contains_key(&insertion.object())); |
| 1877 | let runs = v.text_runs(insertion.text_object()).unwrap(); | |
| 1878 | assert_eq!(runs.len(), 3); | |
| 1879 | assert_eq!(runs[0].text, "Uncertain"); | |
| 1880 | assert_eq!(runs[0].format.bold, Some(true)); | |
| 1881 | assert_eq!(runs[1].text, " "); | |
| 1882 | assert_ne!(runs[1].format.bold, Some(true)); | |
| 1883 | assert_ne!(runs[1].format.italic, Some(true)); | |
| 1884 | assert_eq!(runs[2].text, "insertion"); | |
| 1885 | assert_eq!(runs[2].format.italic, Some(true)); | |
| 1863 | 1886 | assert!(cache.pending().unwrap().is_empty()); |
| 1864 | 1887 | } |
| 1865 | 1888 | } |
| ... | ... | @@ -2668,7 +2691,9 @@ fn reviewed_insertion_placements_preserve_identity_and_dependent_operations() { |
| 2668 | 2691 | Insertion::outline(page, 144.0, 144.0, "Offline", "Author").unwrap() |
| 2669 | 2692 | } else { |
| 2670 | 2693 | Insertion::paragraph(parent, Some(anchor.object()), "Offline", "Author").unwrap() |
| 2671 | }; | |
| 2694 | } | |
| 2695 | .with_formatting(0..7, &[A::Italic(true)]) | |
| 2696 | .unwrap(); | |
| 2672 | 2697 | let cache = Replica::create(&path, &source).unwrap(); |
| 2673 | 2698 | let first = cache.insert(&source, sid, &insertion).unwrap().unwrap(); |
| 2674 | 2699 | let second = cache |
| ... | ... | @@ -2754,6 +2779,10 @@ fn reviewed_insertion_placements_preserve_identity_and_dependent_operations() { |
| 2754 | 2779 | }; |
| 2755 | 2780 | assert_eq!(rebased.object(), insertion.object()); |
| 2756 | 2781 | assert_eq!(rebased.text_object(), insertion.text_object()); |
| 2782 | assert_eq!( | |
| 2783 | serde_json::to_value(&rebased).unwrap()["formats"], | |
| 2784 | serde_json::to_value(&insertion).unwrap()["formats"] | |
| 2785 | ); | |
| 2757 | 2786 | assert_eq!(cache.status(first).unwrap(), Some(EditStatus::Pending)); |
| 2758 | 2787 | drop(cache); |
| 2759 | 2788 | let cache = Replica::open(&path).unwrap(); |
| ... | ... | @@ -2775,6 +2804,7 @@ fn reviewed_insertion_placements_preserve_identity_and_dependent_operations() { |
| 2775 | 2804 | "Offline 🦀" |
| 2776 | 2805 | ); |
| 2777 | 2806 | assert!(runs.iter().all(|r| r.format.bold == Some(true))); |
| 2807 | assert!(runs.iter().all(|r| r.format.italic == Some(true))); | |
| 2778 | 2808 | if outline_case { |
| 2779 | 2809 | assert_eq!( |
| 2780 | 2810 | ( |
crates/onestore/README.md+3-1| ... | ... | @@ -71,7 +71,9 @@ passwords, unsupported protection profiles and work-limit failures remain distin |
| 71 | 71 | The source stays encrypted; protected writes are rejected. |
| 72 | 72 | Insertions update child references, reference counts, modification times and automatic |
| 73 | 73 | titles atomically. Paragraphs can be nested or inserted into table cells; outline |
| 74 | coordinates use points. Retain the `Insertion` value for rebasing: creating another | |
| 74 | coordinates use points. `Insertion::with_formatting` includes nonoverlapping UTF-16 | |
| 75 | spans in that same publication; gaps keep the default insertion style. Empty text | |
| 76 | accepts one `0..0` span for subsequent typing. Retain the `Insertion` value for rebasing: creating another | |
| 75 | 77 | value creates different object identities. Duplicate insertion identities require |
| 76 | 78 | reconciliation. Formatting accepts explicit attributes, preserves inherited values, |
| 77 | 79 | and gives retired immutable styles zero current references while retaining history. |
crates/onestore/src/formatting.rs+28-20| ... | ... | @@ -91,26 +91,7 @@ pub(crate) fn format_text( |
| 91 | 91 | "Select a text range and at least one formatting attribute", |
| 92 | 92 | )); |
| 93 | 93 | } |
| 94 | let mut values = Vec::new(); | |
| 95 | let mut seen = BTreeSet::new(); | |
| 96 | for attribute in attributes { | |
| 97 | let (id, value) = attribute.property()?; | |
| 98 | if !seen.insert(id & 0x7fffffff) { | |
| 99 | return Err(invalid("Specify each formatting attribute once")); | |
| 100 | } | |
| 101 | values.push((id, value)); | |
| 102 | } | |
| 103 | if attributes.contains(&TextAttribute::Superscript(true)) | |
| 104 | && attributes.contains(&TextAttribute::Subscript(true)) | |
| 105 | { | |
| 106 | return Err(invalid("Text cannot be both superscript and subscript")); | |
| 107 | } | |
| 108 | // Setting either script position clears its mutually exclusive counterpart. | |
| 109 | for (set, opposite) in [(0x88001c08, 0x08001c09), (0x88001c09, 0x08001c08)] { | |
| 110 | if values.iter().any(|(id, _)| *id == set) && !seen.contains(&opposite) { | |
| 111 | values.push((opposite, Vec::new())); | |
| 112 | } | |
| 113 | } | |
| 94 | let values = attribute_values(attributes)?; | |
| 114 | 95 | let store = Store::parse(source)?; |
| 115 | 96 | let index = RevisionIndex::parse(&store)?; |
| 116 | 97 | index.validate_current()?; |
| ... | ... | @@ -286,3 +267,30 @@ pub(crate) fn format_text( |
| 286 | 267 | Ok(changed) |
| 287 | 268 | }) |
| 288 | 269 | } |
| 270 | ||
| 271 | pub(crate) fn attribute_values(attributes: &[TextAttribute]) -> Result<Vec<(u32, Vec<u8>)>, Error> { | |
| 272 | if attributes.is_empty() { | |
| 273 | return Err(invalid("Choose at least one formatting attribute")); | |
| 274 | } | |
| 275 | let mut values = Vec::new(); | |
| 276 | let mut seen = BTreeSet::new(); | |
| 277 | for attribute in attributes { | |
| 278 | let (id, value) = attribute.property()?; | |
| 279 | if !seen.insert(id & 0x7fffffff) { | |
| 280 | return Err(invalid("Specify each formatting attribute once")); | |
| 281 | } | |
| 282 | values.push((id, value)); | |
| 283 | } | |
| 284 | if attributes.contains(&TextAttribute::Superscript(true)) | |
| 285 | && attributes.contains(&TextAttribute::Subscript(true)) | |
| 286 | { | |
| 287 | return Err(invalid("Text cannot be both superscript and subscript")); | |
| 288 | } | |
| 289 | // Setting either script position clears its mutually exclusive counterpart. | |
| 290 | for (set, opposite) in [(0x88001c08, 0x08001c09), (0x88001c09, 0x08001c08)] { | |
| 291 | if values.iter().any(|(id, _)| *id == set) && !seen.contains(&opposite) { | |
| 292 | values.push((opposite, Vec::new())); | |
| 293 | } | |
| 294 | } | |
| 295 | Ok(values) | |
| 296 | } |
crates/onestore/src/insertion.rs+110| ... | ... | @@ -8,6 +8,7 @@ use crate::{ |
| 8 | 8 | use serde::{Deserialize, Serialize}; |
| 9 | 9 | use std::{ |
| 10 | 10 | collections::{BTreeMap, BTreeSet}, |
| 11 | ops::Range, | |
| 11 | 12 | sync::Arc, |
| 12 | 13 | }; |
| 13 | 14 | |
| ... | ... | @@ -22,6 +23,14 @@ enum Placement { |
| 22 | 23 | Outline { x: f32, y: f32 }, |
| 23 | 24 | } |
| 24 | 25 | |
| 26 | #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] | |
| 27 | #[serde(deny_unknown_fields)] | |
| 28 | struct FormatSpan { | |
| 29 | guid: [u8; 16], | |
| 30 | range: Range<u32>, | |
| 31 | attributes: Vec<crate::TextAttribute>, | |
| 32 | } | |
| 33 | ||
| 25 | 34 | /// A paragraph or outline insertion with stable object identities and creation time. |
| 26 | 35 | /// Retain this intent across rebases; constructing another intent allocates different identities. |
| 27 | 36 | #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] |
| ... | ... | @@ -33,9 +42,29 @@ pub struct Insertion { |
| 33 | 42 | text: String, |
| 34 | 43 | author: String, |
| 35 | 44 | created: u32, |
| 45 | #[serde(default, skip_serializing_if = "Vec::is_empty")] | |
| 46 | formats: Vec<FormatSpan>, | |
| 36 | 47 | } |
| 37 | 48 | |
| 38 | 49 | impl Insertion { |
| 50 | /// Adds a nonoverlapping UTF-16 formatting span, retaining all existing identities. | |
| 51 | /// Gaps use the ordinary insertion style; only empty text accepts a zero-length span. | |
| 52 | pub fn with_formatting( | |
| 53 | &self, | |
| 54 | range: Range<u32>, | |
| 55 | attributes: &[crate::TextAttribute], | |
| 56 | ) -> Result<Self, Error> { | |
| 57 | let mut intent = self.clone(); | |
| 58 | intent.formats.push(FormatSpan { | |
| 59 | guid: fresh_guid()?, | |
| 60 | range, | |
| 61 | attributes: attributes.to_vec(), | |
| 62 | }); | |
| 63 | intent.formats.sort_by_key(|span| span.range.start); | |
| 64 | intent.validate()?; | |
| 65 | Ok(intent) | |
| 66 | } | |
| 67 | ||
| 39 | 68 | /// Inserts before a direct child, or appends when `before` is None. |
| 40 | 69 | /// The parent must be an editable outline, paragraph, outline group or table cell. |
| 41 | 70 | /// Carriage returns represent soft line breaks; line feeds and embedded-field markers are rejected. |
| ... | ... | @@ -89,6 +118,7 @@ impl Insertion { |
| 89 | 118 | text: text.to_owned(), |
| 90 | 119 | author: author.to_owned(), |
| 91 | 120 | created: current_timestamps()?.0, |
| 121 | formats: Vec::new(), | |
| 92 | 122 | }; |
| 93 | 123 | intent.validate()?; |
| 94 | 124 | Ok(intent) |
| ... | ... | @@ -125,6 +155,37 @@ impl Insertion { |
| 125 | 155 | { |
| 126 | 156 | return Err(invalid("Outline coordinates must be finite")); |
| 127 | 157 | } |
| 158 | if !self.formats.is_empty() { | |
| 159 | let units: Vec<_> = self.text.encode_utf16().collect(); | |
| 160 | let length = u32::try_from(units.len()) | |
| 161 | .map_err(|_| invalid("Text exceeds UTF-16 offset range"))?; | |
| 162 | let mut identities = BTreeSet::from([self.guid]); | |
| 163 | let mut end = 0; | |
| 164 | for span in &self.formats { | |
| 165 | if span.guid == [0; 16] || !identities.insert(span.guid) { | |
| 166 | return Err(invalid("Formatting identities must be distinct")); | |
| 167 | } | |
| 168 | if span.range.start > span.range.end | |
| 169 | || span.range.end > length | |
| 170 | || span.range.start < end | |
| 171 | || (span.range.is_empty() && (!units.is_empty() || self.formats.len() != 1)) | |
| 172 | { | |
| 173 | return Err(invalid( | |
| 174 | "Formatting spans must be nonoverlapping ranges within the new text", | |
| 175 | )); | |
| 176 | } | |
| 177 | for boundary in [span.range.start, span.range.end] { | |
| 178 | if boundary > 0 | |
| 179 | && boundary < length | |
| 180 | && (0xd800..=0xdbff).contains(&units[boundary as usize - 1]) | |
| 181 | { | |
| 182 | return Err(invalid("Formatting boundary splits a surrogate pair")); | |
| 183 | } | |
| 184 | } | |
| 185 | crate::formatting::attribute_values(&span.attributes)?; | |
| 186 | end = span.range.end; | |
| 187 | } | |
| 188 | } | |
| 128 | 189 | Ok(()) |
| 129 | 190 | } |
| 130 | 191 | |
| ... | ... | @@ -243,6 +304,55 @@ impl Insertion { |
| 243 | 304 | }, |
| 244 | 305 | ); |
| 245 | 306 | } |
| 307 | if !self.formats.is_empty() { | |
| 308 | let default = ExGuid { | |
| 309 | guid: self.guid, | |
| 310 | n: 5, | |
| 311 | }; | |
| 312 | let mut segments = Vec::new(); | |
| 313 | let mut end = 0; | |
| 314 | for span in &self.formats { | |
| 315 | if end < span.range.start { | |
| 316 | segments.push((span.range.start, default)); | |
| 317 | } | |
| 318 | let id = ExGuid { | |
| 319 | guid: span.guid, | |
| 320 | n: 1, | |
| 321 | }; | |
| 322 | let mut style = PropertyObject { | |
| 323 | jcid: 0x12004d, | |
| 324 | bytes: properties(&default_text_style())?, | |
| 325 | global_ids: Arc::new(BTreeMap::from([(0, span.guid)])), | |
| 326 | }; | |
| 327 | let values = crate::formatting::attribute_values(&span.attributes)?; | |
| 328 | style.set( | |
| 329 | &values | |
| 330 | .iter() | |
| 331 | .map(|(id, value)| (*id, value.as_slice())) | |
| 332 | .collect::<Vec<_>>(), | |
| 333 | )?; | |
| 334 | new.insert(id, style); | |
| 335 | segments.push((span.range.end, id)); | |
| 336 | end = span.range.end; | |
| 337 | } | |
| 338 | let length = u32::try_from(self.text.encode_utf16().count()) | |
| 339 | .map_err(|_| invalid("Text exceeds UTF-16 offset range"))?; | |
| 340 | if end < length { | |
| 341 | segments.push((length, default)); | |
| 342 | } | |
| 343 | if !segments.iter().any(|(_, id)| *id == default) { | |
| 344 | new.remove(&default); | |
| 345 | } | |
| 346 | let target = new.get_mut(&self.text_object()).unwrap(); | |
| 347 | let mut references = Vec::new(); | |
| 348 | let mut ends = Vec::new(); | |
| 349 | for (end, id) in segments { | |
| 350 | references.extend_from_slice(&target.reference(id)?); | |
| 351 | ends.extend_from_slice(&end.to_le_bytes()); | |
| 352 | } | |
| 353 | ends.truncate(ends.len() - 4); | |
| 354 | target.set(&[(0x24001e13, &references), (0x1c001e12, &ends)])?; | |
| 355 | } | |
| 246 | 356 | if let Placement::Outline { x, y } = self.placement { |
| 247 | 357 | new.insert( |
| 248 | 358 | self.object(), |
crates/onestore/tests/insertion.rs+354-4| ... | ... | @@ -6,7 +6,7 @@ mod current; |
| 6 | 6 | mod disk; |
| 7 | 7 | |
| 8 | 8 | use onestore::{ |
| 9 | ExGuid, Insertion, PreparedEdit, RevisionIndex, Store, | |
| 9 | ExGuid, Insertion, PreparedEdit, RevisionIndex, Store, TextAttribute as A, | |
| 10 | 10 | document::{Document, Kind}, |
| 11 | 11 | }; |
| 12 | 12 | |
| ... | ... | @@ -28,6 +28,335 @@ fn targets(source: &[u8]) -> (ExGuid, ExGuid, ExGuid, ExGuid, ExGuid) { |
| 28 | 28 | (sid, page, outline, paragraph, text) |
| 29 | 29 | } |
| 30 | 30 | |
| 31 | #[test] | |
| 32 | fn atomic_formatted_insertions_match_a_character_model_and_preserve_history() { | |
| 33 | use serde_json::json; | |
| 34 | let source = onestore::create_section("rich.one", "Original", "Author").unwrap(); | |
| 35 | let (sid, page, outline, _, _) = targets(&source); | |
| 36 | let text = "ab🦀 e\u{301} 東京\rEnd\t!"; | |
| 37 | let plain = Insertion::paragraph(outline, None, text, "Author").unwrap(); | |
| 38 | assert!( | |
| 39 | serde_json::to_value(&plain) | |
| 40 | .unwrap() | |
| 41 | .get("formats") | |
| 42 | .is_none() | |
| 43 | ); | |
| 44 | let restored: Insertion = serde_json::from_slice(&serde_json::to_vec(&plain).unwrap()).unwrap(); | |
| 45 | assert_eq!(plain, restored); | |
| 46 | let base = PreparedEdit::insert(&source, sid, &plain).unwrap(); | |
| 47 | let base_store = Store::parse(base.as_bytes()).unwrap(); | |
| 48 | let base_index = RevisionIndex::parse(&base_store).unwrap(); | |
| 49 | let base_doc = Document::parse(&base_index).unwrap(); | |
| 50 | let base_space = &base_doc.spaces[&sid]; | |
| 51 | let base_view = &base_space.revisions[&base_space.contexts[&ExGuid::default()]]; | |
| 52 | let default = | |
| 53 | serde_json::to_value(&base_view.text_runs(plain.text_object()).unwrap()[0].format).unwrap(); | |
| 54 | let offsets: Vec<u32> = std::iter::once(0) | |
| 55 | .chain(text.chars().scan(0, |n, c| { | |
| 56 | *n += c.len_utf16() as u32; | |
| 57 | Some(*n) | |
| 58 | })) | |
| 59 | .collect(); | |
| 60 | let old_store = Store::parse(&source).unwrap(); | |
| 61 | let old_index = RevisionIndex::parse(&old_store).unwrap(); | |
| 62 | for seed in 1..=48_u64 { | |
| 63 | let mut random = seed; | |
| 64 | let mut expected: Vec<_> = text.chars().map(|c| (c, default.clone())).collect(); | |
| 65 | let mut intent = if seed % 2 == 0 { | |
| 66 | Insertion::outline(page, 72.0, 144.0, text, "Author").unwrap() | |
| 67 | } else { | |
| 68 | plain.clone() | |
| 69 | }; | |
| 70 | // Descending construction also exercises persisted ordering independently of call order. | |
| 71 | for i in (0..expected.len()).rev() { | |
| 72 | random ^= random << 13; | |
| 73 | random ^= random >> 7; | |
| 74 | random ^= random << 17; | |
| 75 | let (attributes, values) = match random % 8 { | |
| 76 | 0 => continue, | |
| 77 | 1 => ( | |
| 78 | vec![A::Bold(true), A::Underline(true)], | |
| 79 | json!({"bold":true,"underline":true}), | |
| 80 | ), | |
| 81 | 2 => ( | |
| 82 | vec![A::Italic(true), A::Strike(true)], | |
| 83 | json!({"italic":true,"strike":true}), | |
| 84 | ), | |
| 85 | 3 => ( | |
| 86 | vec![A::Font("Arial".into()), A::FontSize(13.5)], | |
| 87 | json!({"font":"Arial","font_size":13.5}), | |
| 88 | ), | |
| 89 | 4 => ( | |
| 90 | vec![ | |
| 91 | A::Color(Some([12, 34, 56])), | |
| 92 | A::Highlight(Some([255, 255, 0])), | |
| 93 | ], | |
| 94 | json!({"color":0x38220c,"highlight":0x00ffff}), | |
| 95 | ), | |
| 96 | 5 => ( | |
| 97 | vec![A::Superscript(true)], | |
| 98 | json!({"superscript":true,"subscript":false}), | |
| 99 | ), | |
| 100 | 6 => ( | |
| 101 | vec![A::Subscript(true)], | |
| 102 | json!({"subscript":true,"superscript":false}), | |
| 103 | ), | |
| 104 | _ => ( | |
| 105 | vec![A::Bold(false), A::Color(None), A::Highlight(None)], | |
| 106 | json!({"bold":false,"color":0xff000000_u32,"highlight":0xff000000_u32}), | |
| 107 | ), | |
| 108 | }; | |
| 109 | intent = intent | |
| 110 | .with_formatting(offsets[i]..offsets[i + 1], &attributes) | |
| 111 | .unwrap(); | |
| 112 | for (key, value) in values.as_object().unwrap() { | |
| 113 | expected[i].1[key] = value.clone(); | |
| 114 | } | |
| 115 | } | |
| 116 | let restored: Insertion = | |
| 117 | serde_json::from_slice(&serde_json::to_vec(&intent).unwrap()).unwrap(); | |
| 118 | assert_eq!(restored, intent); | |
| 119 | let edited = PreparedEdit::insert(&source, sid, &restored).unwrap(); | |
| 120 | let store = Store::parse(edited.as_bytes()).unwrap(); | |
| 121 | assert_eq!( | |
| 122 | store.header.transaction_count, | |
| 123 | old_store.header.transaction_count + 1 | |
| 124 | ); | |
| 125 | let index = RevisionIndex::parse(&store).unwrap(); | |
| 126 | index.validate_current().unwrap(); | |
| 127 | assert_eq!( | |
| 128 | index.spaces[&sid].revisions.len(), | |
| 129 | old_index.spaces[&sid].revisions.len() + 1 | |
| 130 | ); | |
| 131 | for (space, old) in &old_index.spaces { | |
| 132 | for revision in old.revisions.keys() { | |
| 133 | assert_eq!( | |
| 134 | format!("{:?}", old_index.resolve(*space, *revision).unwrap()), | |
| 135 | format!("{:?}", index.resolve(*space, *revision).unwrap()) | |
| 136 | ); | |
| 137 | } | |
| 138 | } | |
| 139 | let document = Document::parse(&index).unwrap(); | |
| 140 | let space = &document.spaces[&sid]; | |
| 141 | let view = &space.revisions[&space.contexts[&ExGuid::default()]]; | |
| 142 | let actual: Vec<_> = view | |
| 143 | .text_runs(intent.text_object()) | |
| 144 | .unwrap() | |
| 145 | .into_iter() | |
| 146 | .flat_map(|run| { | |
| 147 | let format = serde_json::to_value(run.format).unwrap(); | |
| 148 | run.text.chars().map(move |c| (c, format.clone())) | |
| 149 | }) | |
| 150 | .collect(); | |
| 151 | assert_eq!(actual, expected, "seed {seed}"); | |
| 152 | } | |
| 153 | } | |
| 154 | ||
| 155 | #[test] | |
| 156 | fn invalid_or_forged_insertion_formats_fail_before_source_parsing() { | |
| 157 | use serde_json::json; | |
| 158 | let source = onestore::create_section("invalid-rich.one", "Original", "Author").unwrap(); | |
| 159 | let (sid, _, outline, _, _) = targets(&source); | |
| 160 | let plain = Insertion::paragraph(outline, None, "a🦀e\u{301}b", "Author").unwrap(); | |
| 161 | for (start, end) in [(0, 0), (2, 3), (1, 2), (4, 3), (0, 7)] { | |
| 162 | let range = start..end; | |
| 163 | assert!(plain.with_formatting(range, &[A::Bold(true)]).is_err()); | |
| 164 | } | |
| 165 | for attributes in [ | |
| 166 | vec![], | |
| 167 | vec![A::Bold(true), A::Bold(false)], | |
| 168 | vec![A::FontSize(f32::NAN)], | |
| 169 | vec![A::FontSize(5.5)], | |
| 170 | vec![A::Font("a\0b".into())], | |
| 171 | vec![A::Superscript(true), A::Subscript(true)], | |
| 172 | ] { | |
| 173 | assert!(plain.with_formatting(1..3, &attributes).is_err()); | |
| 174 | } | |
| 175 | let formatted = plain.with_formatting(1..3, &[A::Bold(true)]).unwrap(); | |
| 176 | for range in [0..3, 1..3, 1..4] { | |
| 177 | assert!( | |
| 178 | formatted | |
| 179 | .with_formatting(range, &[A::Italic(true)]) | |
| 180 | .is_err() | |
| 181 | ); | |
| 182 | } | |
| 183 | let encoded = serde_json::to_value(&formatted).unwrap(); | |
| 184 | for mutate in 0..6 { | |
| 185 | let mut value = encoded.clone(); | |
| 186 | match mutate { | |
| 187 | 0 => value["formats"][0]["guid"] = serde_json::to_value([0; 16]).unwrap(), | |
| 188 | 1 => value["formats"][0]["guid"] = value["guid"].clone(), | |
| 189 | 2 => { | |
| 190 | let duplicate = value["formats"][0].clone(); | |
| 191 | value["formats"].as_array_mut().unwrap().push(duplicate); | |
| 192 | } | |
| 193 | 3 => value["formats"][0]["range"] = json!({"start":2,"end":3}), | |
| 194 | 4 => value["formats"][0]["attributes"] = json!([]), | |
| 195 | _ => value["formats"][0]["range"] = json!({"start":0,"end":u32::MAX}), | |
| 196 | } | |
| 197 | let forged: Insertion = serde_json::from_value(value).unwrap(); | |
| 198 | let error = PreparedEdit::insert(&[], sid, &forged).err().unwrap(); | |
| 199 | assert_eq!( | |
| 200 | error, | |
| 201 | PreparedEdit::insert(&source, sid, &forged).err().unwrap() | |
| 202 | ); | |
| 203 | } | |
| 204 | } | |
| 205 | ||
| 206 | #[test] | |
| 207 | fn formatted_empty_insertions_preserve_the_insertion_style_for_later_typing() { | |
| 208 | let source = onestore::create_section("empty-rich.one", "Original", "Author").unwrap(); | |
| 209 | let (sid, page, outline, _, _) = targets(&source); | |
| 210 | for plain in [ | |
| 211 | Insertion::outline(page, 72.0, 144.0, "", "Author").unwrap(), | |
| 212 | Insertion::paragraph(outline, None, "", "Author").unwrap(), | |
| 213 | ] { | |
| 214 | let intent = plain | |
| 215 | .with_formatting(0..0, &[A::Italic(true), A::FontSize(18.0)]) | |
| 216 | .unwrap(); | |
| 217 | assert!(intent.with_formatting(0..0, &[A::Bold(true)]).is_err()); | |
| 218 | let inserted = PreparedEdit::insert(&source, sid, &intent).unwrap(); | |
| 219 | let typed = PreparedEdit::text( | |
| 220 | inserted.as_bytes(), | |
| 221 | sid, | |
| 222 | intent.text_object(), | |
| 223 | 0..0, | |
| 224 | "Typed 🦀", | |
| 225 | ) | |
| 226 | .unwrap(); | |
| 227 | for (bytes, text) in [(inserted.as_bytes(), ""), (typed.as_bytes(), "Typed 🦀")] { | |
| 228 | let store = Store::parse(bytes).unwrap(); | |
| 229 | let index = RevisionIndex::parse(&store).unwrap(); | |
| 230 | index.validate_current().unwrap(); | |
| 231 | let document = Document::parse(&index).unwrap(); | |
| 232 | let space = &document.spaces[&sid]; | |
| 233 | let view = &space.revisions[&space.contexts[&ExGuid::default()]]; | |
| 234 | let runs = view.text_runs(intent.text_object()).unwrap(); | |
| 235 | assert_eq!(runs.len(), 1); | |
| 236 | assert_eq!(runs[0].text, text); | |
| 237 | assert_eq!(runs[0].format.italic, Some(true)); | |
| 238 | assert_eq!(runs[0].format.font_size, Some(18.0)); | |
| 239 | } | |
| 240 | } | |
| 241 | } | |
| 242 | ||
| 243 | #[test] | |
| 244 | #[ignore = "exports formatted insertion candidates for cold native validation"] | |
| 245 | fn export_native_formatted_insertions() { | |
| 246 | use std::{fs, path::PathBuf}; | |
| 247 | let output = PathBuf::from(std::env::var_os("ONESTORE_INSERT_OUTPUT").unwrap()); | |
| 248 | assert!(output.is_absolute()); | |
| 249 | fs::create_dir(&output).unwrap(); | |
| 250 | let generated = onestore::create_section("rich.one", "Original", "Author").unwrap(); | |
| 251 | let unicode = include_bytes!( | |
| 252 | "../../../corpus/native/20260905-05/snapshots/03-format-unicode/notebook/synthetic.one" | |
| 253 | ); | |
| 254 | let table = include_bytes!( | |
| 255 | "../../../corpus/native/20260905-05/snapshots/07-table/notebook/synthetic.one" | |
| 256 | ); | |
| 257 | let text = "Bold 🦀 italic e\u{301} color 東京\rEnd"; | |
| 258 | let mut manifest = Vec::new(); | |
| 259 | for (name, source, empty) in [ | |
| 260 | ("outline", generated.as_slice(), false), | |
| 261 | ("native-paragraph", unicode.as_slice(), false), | |
| 262 | ("native-cell", table.as_slice(), false), | |
| 263 | ("empty", generated.as_slice(), true), | |
| 264 | ("empty-typed", generated.as_slice(), true), | |
| 265 | ] { | |
| 266 | let (sid, page, outline, paragraph, _) = targets(source); | |
| 267 | let insertion = match name { | |
| 268 | "native-paragraph" => { | |
| 269 | Insertion::paragraph(outline, Some(paragraph), text, "Rich author") | |
| 270 | } | |
| 271 | "native-cell" => { | |
| 272 | let store = Store::parse(source).unwrap(); | |
| 273 | let index = RevisionIndex::parse(&store).unwrap(); | |
| 274 | let document = Document::parse(&index).unwrap(); | |
| 275 | let space = &document.spaces[&sid]; | |
| 276 | let view = &space.revisions[&space.contexts[&ExGuid::default()]]; | |
| 277 | let cell = *view | |
| 278 | .nodes | |
| 279 | .iter() | |
| 280 | .find(|(_, node)| matches!(node.kind, Kind::Cell { .. })) | |
| 281 | .unwrap() | |
| 282 | .0; | |
| 283 | Insertion::paragraph(cell, None, text, "Rich author") | |
| 284 | } | |
| 285 | _ => Insertion::outline( | |
| 286 | page, | |
| 287 | 72.0, | |
| 288 | 144.0, | |
| 289 | if empty { "" } else { text }, | |
| 290 | "Rich author", | |
| 291 | ), | |
| 292 | } | |
| 293 | .unwrap(); | |
| 294 | let mut intent = insertion; | |
| 295 | if empty { | |
| 296 | intent = intent | |
| 297 | .with_formatting(0..0, &[A::Italic(true), A::FontSize(18.0)]) | |
| 298 | .unwrap(); | |
| 299 | } else { | |
| 300 | for (label, attributes) in [ | |
| 301 | ("Bold", vec![A::Bold(true), A::Underline(true)]), | |
| 302 | ("🦀", vec![A::Font("Arial".into()), A::FontSize(13.5)]), | |
| 303 | ("italic", vec![A::Italic(true), A::Strike(true)]), | |
| 304 | ("e\u{301}", vec![A::Superscript(true)]), | |
| 305 | ( | |
| 306 | "color", | |
| 307 | vec![ | |
| 308 | A::Color(Some([12, 34, 56])), | |
| 309 | A::Highlight(Some([255, 255, 0])), | |
| 310 | ], | |
| 311 | ), | |
| 312 | ("東京", vec![A::Subscript(true)]), | |
| 313 | ( | |
| 314 | "End", | |
| 315 | vec![ | |
| 316 | A::Bold(false), | |
| 317 | A::Italic(false), | |
| 318 | A::Color(None), | |
| 319 | A::Highlight(None), | |
| 320 | ], | |
| 321 | ), | |
| 322 | ] { | |
| 323 | let start = text[..text.find(label).unwrap()].encode_utf16().count() as u32; | |
| 324 | intent = intent | |
| 325 | .with_formatting( | |
| 326 | start..start + label.encode_utf16().count() as u32, | |
| 327 | &attributes, | |
| 328 | ) | |
| 329 | .unwrap(); | |
| 330 | } | |
| 331 | } | |
| 332 | let inserted = PreparedEdit::insert(source, sid, &intent).unwrap(); | |
| 333 | let bytes = if name == "empty-typed" { | |
| 334 | PreparedEdit::text( | |
| 335 | inserted.as_bytes(), | |
| 336 | sid, | |
| 337 | intent.text_object(), | |
| 338 | 0..0, | |
| 339 | "Typed café 🦀", | |
| 340 | ) | |
| 341 | .unwrap() | |
| 342 | .as_bytes() | |
| 343 | .to_vec() | |
| 344 | } else { | |
| 345 | inserted.as_bytes().to_vec() | |
| 346 | }; | |
| 347 | current::current(&bytes); | |
| 348 | let notebook = output.join(name); | |
| 349 | fs::create_dir(&notebook).unwrap(); | |
| 350 | fs::write(notebook.join("synthetic.one"), &bytes).unwrap(); | |
| 351 | manifest.push(serde_json::json!({"name":name,"space":sid,"intent":intent})); | |
| 352 | } | |
| 353 | fs::write( | |
| 354 | output.join("manifest.json"), | |
| 355 | serde_json::to_vec_pretty(&manifest).unwrap(), | |
| 356 | ) | |
| 357 | .unwrap(); | |
| 358 | } | |
| 359 | ||
| 31 | 360 | #[test] |
| 32 | 361 | fn paragraph_and_outline_insertions_publish_metadata_and_references_together() { |
| 33 | 362 | let source = onestore::create_section("insertion.one", "Original", "Original author").unwrap(); |
| ... | ... | @@ -165,11 +494,15 @@ fn repeated_insertions_and_formatting_share_immutable_objects() { |
| 165 | 494 | fn serialized_insertions_rebase_with_the_same_objects_and_preserve_remote_edits() { |
| 166 | 495 | let source = onestore::create_section("rebase.one", "Original", "Author").unwrap(); |
| 167 | 496 | let (sid, _, outline, paragraph, text) = targets(&source); |
| 168 | let intent = Insertion::paragraph(outline, Some(paragraph), "Inserted", "Author").unwrap(); | |
| 497 | let intent = Insertion::paragraph(outline, Some(paragraph), "Inserted", "Author") | |
| 498 | .unwrap() | |
| 499 | .with_formatting(0..3, &[A::Bold(true), A::Color(Some([12, 34, 56]))]) | |
| 500 | .unwrap(); | |
| 169 | 501 | let encoded = serde_json::to_vec(&intent).unwrap(); |
| 170 | 502 | let restored: Insertion = serde_json::from_slice(&encoded).unwrap(); |
| 171 | 503 | assert_eq!(intent.object(), restored.object()); |
| 172 | 504 | assert_eq!(intent.text_object(), restored.text_object()); |
| 505 | assert_eq!(intent, restored); | |
| 173 | 506 | let original_preparation = PreparedEdit::insert(&source, sid, &intent).unwrap(); |
| 174 | 507 | let remote = PreparedEdit::text(&source, sid, text, 0..0, "Remote ").unwrap(); |
| 175 | 508 | let updated = PreparedEdit::insert(remote.as_bytes(), sid, &restored).unwrap(); |
| ... | ... | @@ -188,6 +521,12 @@ fn serialized_insertions_rebase_with_the_same_objects_and_preserve_remote_edits( |
| 188 | 521 | assert!( |
| 189 | 522 | matches!(&view.nodes[&restored.text_object()].kind, Kind::RichText { text, .. } if text == "Inserted") |
| 190 | 523 | ); |
| 524 | let runs = view.text_runs(restored.text_object()).unwrap(); | |
| 525 | assert_eq!(runs[0].text, "Ins"); | |
| 526 | assert_eq!(runs[0].format.bold, Some(true)); | |
| 527 | assert_eq!(runs[0].format.color, Some(0x38220c)); | |
| 528 | assert_eq!(runs[1].text, "erted"); | |
| 529 | assert_ne!(runs[1].format.bold, Some(true)); | |
| 191 | 530 | assert!(PreparedEdit::insert(original_preparation.as_bytes(), sid, &restored).is_err()); |
| 192 | 531 | assert!(PreparedEdit::insert(updated.as_bytes(), sid, &restored).is_err()); |
| 193 | 532 | } |
| ... | ... | @@ -196,8 +535,14 @@ fn serialized_insertions_rebase_with_the_same_objects_and_preserve_remote_edits( |
| 196 | 535 | fn repositioning_preserves_intent_identity_and_kind() { |
| 197 | 536 | let source = onestore::create_section("placement.one", "Original", "Author").unwrap(); |
| 198 | 537 | let (sid, page, outline, paragraph, _) = targets(&source); |
| 199 | let p = Insertion::paragraph(outline, Some(paragraph), "Inserted", "Author").unwrap(); | |
| 200 | let o = Insertion::outline(page, 144.0, 144.0, "Inserted", "Author").unwrap(); | |
| 538 | let p = Insertion::paragraph(outline, Some(paragraph), "Inserted", "Author") | |
| 539 | .unwrap() | |
| 540 | .with_formatting(1..4, &[A::Italic(true)]) | |
| 541 | .unwrap(); | |
| 542 | let o = Insertion::outline(page, 144.0, 144.0, "Inserted", "Author") | |
| 543 | .unwrap() | |
| 544 | .with_formatting(0..8, &[A::FontSize(18.0)]) | |
| 545 | .unwrap(); | |
| 201 | 546 | assert!(p.reposition_outline(page, 72.0, 72.0).is_err()); |
| 202 | 547 | assert!(o.reposition_paragraph(outline, None).is_err()); |
| 203 | 548 | assert!(p.reposition_paragraph(ExGuid::default(), None).is_err()); |
| ... | ... | @@ -344,6 +689,11 @@ fn insertion_publication_faults_expose_only_complete_graphs_and_title_caches() { |
| 344 | 689 | Insertion::paragraph(outline, Some(paragraph), "First 🦀", "New author").unwrap(), |
| 345 | 690 | Insertion::outline(page, 0.0, 0.0, "First 🦀", "New author").unwrap(), |
| 346 | 691 | ] { |
| 692 | let intent = intent | |
| 693 | .with_formatting(0..3, &[A::Bold(true), A::FontSize(18.0)]) | |
| 694 | .unwrap() | |
| 695 | .with_formatting(6..8, &[A::Italic(true), A::Highlight(Some([255, 255, 0]))]) | |
| 696 | .unwrap(); | |
| 347 | 697 | let edit = PreparedEdit::insert(source, sid, &intent).unwrap(); |
| 348 | 698 | let before = current::current(source); |
| 349 | 699 | let after = current::current(edit.as_bytes()); |
fuzz/Cargo.toml+7| ... | ... | @@ -77,3 +77,10 @@ path = "fuzz_targets/edit_text.rs" |
| 77 | 77 | test = false |
| 78 | 78 | doc = false |
| 79 | 79 | bench = false |
| 80 | ||
| 81 | [[bin]] | |
| 82 | name = "insert" | |
| 83 | path = "fuzz_targets/insert.rs" | |
| 84 | test = false | |
| 85 | doc = false | |
| 86 | bench = false |
fuzz/fuzz_targets/insert.rs created+135| ... | ... | @@ -0,0 +1,135 @@ |
| 1 | #![no_main] | |
| 2 | use libfuzzer_sys::fuzz_target; | |
| 3 | use onestore::{ | |
| 4 | CommitState, ExGuid, Insertion, PreparedEdit, RevisionIndex, Store, TextAttribute as A, | |
| 5 | document::{Document, Kind}, | |
| 6 | }; | |
| 7 | use std::sync::LazyLock; | |
| 8 | ||
| 9 | #[path = "../../crates/onestore/tests/support/current.rs"] | |
| 10 | mod current; | |
| 11 | #[path = "../../crates/onestore/tests/support/disk.rs"] | |
| 12 | mod disk; | |
| 13 | ||
| 14 | static SOURCE: LazyLock<(Vec<u8>, ExGuid, ExGuid, ExGuid)> = LazyLock::new(|| { | |
| 15 | let bytes = include_bytes!( | |
| 16 | "../../corpus/native/20260905-05/snapshots/03-format-unicode/notebook/synthetic.one" | |
| 17 | ) | |
| 18 | .to_vec(); | |
| 19 | let store = Store::parse(&bytes).unwrap(); | |
| 20 | let index = RevisionIndex::parse(&store).unwrap(); | |
| 21 | let document = Document::parse(&index).unwrap(); | |
| 22 | let (space, page) = document.pages().unwrap()[0]; | |
| 23 | let s = &document.spaces[&space]; | |
| 24 | let view = &s.revisions[&s.contexts[&ExGuid::default()]]; | |
| 25 | let outline = *view.nodes[&page] | |
| 26 | .children | |
| 27 | .iter() | |
| 28 | .find(|id| matches!(view.nodes[id].kind, Kind::Outline { .. })) | |
| 29 | .unwrap(); | |
| 30 | (bytes, space, page, outline) | |
| 31 | }); | |
| 32 | ||
| 33 | fuzz_target!(|input: &[u8]| { | |
| 34 | let (source, space, page, outline) = &*SOURCE; | |
| 35 | if let Ok(intent) = serde_json::from_slice::<Insertion>(input) | |
| 36 | && let Ok(prepared) = PreparedEdit::insert(source, *space, &intent) | |
| 37 | { | |
| 38 | current::current(prepared.as_bytes()); | |
| 39 | } | |
| 40 | let mut persisted = source.clone(); | |
| 41 | let mut caches = std::array::from_fn::<_, 12, _>(|_| source.clone()); | |
| 42 | for step in input.chunks_exact(8).take(12) { | |
| 43 | let actor = usize::from(step[0]) % caches.len(); | |
| 44 | if step[1] % 4 == 0 { | |
| 45 | caches[actor].clone_from(&persisted); | |
| 46 | } | |
| 47 | let source = &caches[actor]; | |
| 48 | let text = | |
| 49 | ["", "ab", "🦀e\u{301}東京\rEnd", "same style same style"][usize::from(step[2]) % 4]; | |
| 50 | let offsets: Vec<u32> = std::iter::once(0) | |
| 51 | .chain(text.chars().scan(0, |n, c| { | |
| 52 | *n += c.len_utf16() as u32; | |
| 53 | Some(*n) | |
| 54 | })) | |
| 55 | .collect(); | |
| 56 | let first = usize::from(step[3]) % offsets.len(); | |
| 57 | let second = usize::from(step[4]) % offsets.len(); | |
| 58 | let (start, end) = (first.min(second), first.max(second)); | |
| 59 | let plain = if step[1] & 1 == 0 { | |
| 60 | Insertion::paragraph(*outline, None, text, "Insertion fuzz").unwrap() | |
| 61 | } else { | |
| 62 | Insertion::outline(*page, 72.0, 144.0, text, "Insertion fuzz").unwrap() | |
| 63 | }; | |
| 64 | let enabled = step[5] & 1 != 0; | |
| 65 | let intent = if start != end || text.is_empty() { | |
| 66 | plain | |
| 67 | .with_formatting( | |
| 68 | offsets[start]..offsets[end], | |
| 69 | &[A::Bold(enabled), A::FontSize(18.0)], | |
| 70 | ) | |
| 71 | .unwrap() | |
| 72 | } else { | |
| 73 | plain | |
| 74 | }; | |
| 75 | let encoded = serde_json::to_vec(&intent).unwrap(); | |
| 76 | let intent: Insertion = serde_json::from_slice(&encoded).unwrap(); | |
| 77 | let edit = PreparedEdit::insert(source, *space, &intent).unwrap(); | |
| 78 | let store = Store::parse(edit.as_bytes()).unwrap(); | |
| 79 | let index = RevisionIndex::parse(&store).unwrap(); | |
| 80 | let document = Document::parse(&index).unwrap(); | |
| 81 | let s = &document.spaces[space]; | |
| 82 | let view = &s.revisions[&s.contexts[&ExGuid::default()]]; | |
| 83 | let actual: Vec<_> = view | |
| 84 | .text_runs(intent.text_object()) | |
| 85 | .unwrap() | |
| 86 | .into_iter() | |
| 87 | .flat_map(|run| { | |
| 88 | run.text.chars().map(move |c| { | |
| 89 | ( | |
| 90 | c, | |
| 91 | run.format.bold.unwrap_or(false), | |
| 92 | run.format.font_size.unwrap(), | |
| 93 | ) | |
| 94 | }) | |
| 95 | }) | |
| 96 | .collect(); | |
| 97 | let expected: Vec<_> = text | |
| 98 | .chars() | |
| 99 | .enumerate() | |
| 100 | .map(|(i, c)| { | |
| 101 | if (start..end).contains(&i) { | |
| 102 | (c, enabled, 18.0) | |
| 103 | } else { | |
| 104 | (c, false, 11.0) | |
| 105 | } | |
| 106 | }) | |
| 107 | .collect(); | |
| 108 | assert_eq!(actual, expected); | |
| 109 | let before = current::current(&persisted); | |
| 110 | let after = current::current(edit.as_bytes()); | |
| 111 | let mut disk = disk::Disk { | |
| 112 | visible: persisted.clone(), | |
| 113 | durable: persisted.clone(), | |
| 114 | operation: 0, | |
| 115 | fail_at: (step[6] != 0).then_some(usize::from(step[6])), | |
| 116 | write_limit: if step[7] & 1 == 0 { 17 } else { 4096 }, | |
| 117 | random: u64::from(step[7]) + 1, | |
| 118 | }; | |
| 119 | let result = edit.commit(&mut disk); | |
| 120 | let observed = current::current(&disk.durable); | |
| 121 | match result { | |
| 122 | Ok(()) => assert_eq!(observed, after), | |
| 123 | Err(error) => { | |
| 124 | assert!(observed == before || observed == after); | |
| 125 | if error.state == CommitState::NotCommitted { | |
| 126 | assert_eq!(observed, before); | |
| 127 | } | |
| 128 | if error.state == CommitState::Committed { | |
| 129 | assert_eq!(observed, after); | |
| 130 | } | |
| 131 | } | |
| 132 | } | |
| 133 | persisted = disk.durable; | |
| 134 | } | |
| 135 | }); |
tools/native/formatted-insertion.ps1 created+53| ... | ... | @@ -0,0 +1,53 @@ |
| 1 | param([Parameter(Mandatory=$true)][string]$Root, [string]$CloneHost = '') | |
| 2 | Set-StrictMode -Version Latest | |
| 3 | $ErrorActionPreference = 'Stop' | |
| 4 | & "$PSScriptRoot\cold-current.ps1" -Root $Root -CloneHost $CloneHost | |
| 5 | $app = New-Object -ComObject OneNote.Application | |
| 6 | $notebook = '' | |
| 7 | try { | |
| 8 | $app.OpenHierarchy((Join-Path $Root 'notebook'), '', [ref]$notebook, 0) | |
| 9 | $section = '' | |
| 10 | $app.OpenHierarchy('synthetic.one', $notebook, [ref]$section, 0) | |
| 11 | $deadline = [DateTime]::UtcNow.AddSeconds(60) | |
| 12 | do { | |
| 13 | $hierarchy = '' | |
| 14 | $app.GetHierarchy($section, 4, [ref]$hierarchy, 1) | |
| 15 | [xml]$tree = $hierarchy | |
| 16 | $pages = @($tree.SelectNodes('//*[local-name()="Page"]')) | |
| 17 | if ($pages.Count -eq 1) { break } | |
| 18 | Start-Sleep -Milliseconds 250 | |
| 19 | } while ([DateTime]::UtcNow -lt $deadline) | |
| 20 | if ($pages.Count -ne 1) { throw 'Expected one fixture page.' } | |
| 21 | $pageId = $pages[0].GetAttribute('ID') | |
| 22 | foreach ($phase in @('control', 'edit')) { | |
| 23 | $content = '' | |
| 24 | $app.GetPageContent($pageId, [ref]$content, 1, 1) | |
| 25 | [IO.File]::WriteAllText((Join-Path $Root ($phase + '-before.xml')), $content, [Text.Encoding]::UTF8) | |
| 26 | [xml]$page = $content | |
| 27 | $matches = @($page.SelectNodes('//*[local-name()="T"]') | Where-Object { | |
| 28 | $plain = [regex]::Replace($_.InnerText, '<[^>]*>', '') | |
| 29 | $plain.StartsWith('Bold ') -or $plain.StartsWith('Typed ') | |
| 30 | }) | |
| 31 | if ($matches.Count -ne 1) { throw 'Expected one inserted rich paragraph.' } | |
| 32 | $target = $matches[0] | |
| 33 | if ($phase -eq 'edit') { $target.InnerText = $target.InnerText.Replace('Bold', 'Native Bold').Replace('Typed', 'Native Typed') } | |
| 34 | $outline = $target | |
| 35 | while ($outline.LocalName -ne 'Outline') { $outline = $outline.ParentNode } | |
| 36 | $update = '<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="' + $pageId + '">' | |
| 37 | foreach ($style in $page.SelectNodes('/*/*[local-name()="QuickStyleDef"]')) { $update += $style.OuterXml } | |
| 38 | if ($outline.SelectSingleNode('.//*[local-name()="Table"]')) { | |
| 39 | # Resubmitting measured outline size constrains native table auto-fit. | |
| 40 | foreach ($size in @($outline.SelectNodes('*[local-name()="Size"]'))) { [void]$outline.RemoveChild($size) } | |
| 41 | } | |
| 42 | $update += $outline.OuterXml + '</one:Page>' | |
| 43 | [IO.File]::WriteAllText((Join-Path $Root ($phase + '-update.xml')), $update, [Text.Encoding]::UTF8) | |
| 44 | $app.UpdatePageContent($update, [DateTime]::MinValue, 1, $false) | |
| 45 | } | |
| 46 | $app.SyncHierarchy($notebook) | |
| 47 | } finally { | |
| 48 | if ($notebook) { $app.CloseNotebook($notebook, $false) } | |
| 49 | [void][Runtime.InteropServices.Marshal]::FinalReleaseComObject($app) | |
| 50 | $app = $null | |
| 51 | [GC]::Collect() | |
| 52 | [GC]::WaitForPendingFinalizers() | |
| 53 | } |
tools/native/read.ps1+4-1| ... | ... | @@ -40,6 +40,7 @@ try { |
| 40 | 40 | } |
| 41 | 41 | $deadline = [DateTime]::UtcNow.AddSeconds(300) |
| 42 | 42 | $previous = '' |
| 43 | $lastChange = '' | |
| 43 | 44 | $stableSince = [DateTime]::UtcNow |
| 44 | 45 | $settled = $false |
| 45 | 46 | do { |
| ... | ... | @@ -62,6 +63,7 @@ try { |
| 62 | 63 | } |
| 63 | 64 | $signature = [String]::Join('|', @($pages.Keys | Sort-Object | ForEach-Object { $_ + $pages[$_] })) |
| 64 | 65 | if ($signature -ne $previous) { |
| 66 | $lastChange = $previous | |
| 65 | 67 | $previous = $signature |
| 66 | 68 | $stableSince = [DateTime]::UtcNow |
| 67 | 69 | } |
| ... | ... | @@ -71,6 +73,7 @@ try { |
| 71 | 73 | Start-Sleep -Milliseconds 250 |
| 72 | 74 | } while ([DateTime]::UtcNow -lt $deadline) |
| 73 | 75 | if (-not $settled -or ($ExpectedPages -ge 0 -and $pages.Count -ne $ExpectedPages) -or ($ExpectedPages -lt 0 -and $pages.Count -eq 0)) { |
| 76 | [IO.File]::WriteAllText((Join-Path $output 'previous-signature.txt'), $lastChange, [Text.Encoding]::UTF8) | |
| 74 | 77 | $index = 0 |
| 75 | 78 | foreach ($id in @($pages.Keys | Sort-Object)) { |
| 76 | 79 | [IO.File]::WriteAllText((Join-Path $output ('unsettled-{0:d3}.xml' -f $index)), $pages[$id], [Text.Encoding]::UTF8) |
| ... | ... | @@ -79,7 +82,7 @@ try { |
| 79 | 82 | $hierarchy = '' |
| 80 | 83 | $app.GetHierarchy($notebookId, 4, [ref]$hierarchy, 1) |
| 81 | 84 | [IO.File]::WriteAllText((Join-Path $output 'unsettled-hierarchy.xml'), $hierarchy, [Text.Encoding]::UTF8) |
| 82 | throw "Expected $ExpectedPages pages; OneNote returned $($pages.Count)." | |
| 85 | throw "Expected $ExpectedPages stable pages; OneNote returned $($pages.Count), settled=$settled." | |
| 83 | 86 | } |
| 84 | 87 | $index = 0 |
| 85 | 88 | $payloads = @() |
tools/offline_document_history.py+6-1| ... | ... | @@ -80,6 +80,11 @@ def document_history(logs, operations): |
| 80 | 80 | assert formatted['range'] == [1, len(text.encode('utf-16-le')) // 2 - 2] |
| 81 | 81 | assert formatted['attributes'] == [{'Bold': True}, {'FontSize': 18 + number % 9}, {'Color': [18, 52, 86]}] |
| 82 | 82 | old = [(char, False, 11, 0xff000000) for char in text] |
| 83 | if insertion.get('formats'): | |
| 84 | span, = insertion['formats'] | |
| 85 | assert span['range'] == {'start': 0, 'end': len(text.encode('utf-16-le')) // 2}, 'Initial formatting range differs from workload' | |
| 86 | assert span['attributes'] == [{'FontSize': 13.5}, {'Color': [68, 85, 102]}], 'Initial formatting attributes differ from workload' | |
| 87 | old = [(char, False, 13.5, 0x665544) for char in text] | |
| 83 | 88 | new = [(char, True, 18 + number % 9, 0x563412) if 0 < i < len(text)-1 else old[i] for i, char in enumerate(text)] |
| 84 | 89 | assert target not in documents, 'Two insertion intents share an object identity' |
| 85 | 90 | created, changed = linked[inserted['id']], linked[formatted['id']] |
| ... | ... | @@ -158,6 +163,6 @@ def verify_native(paragraphs, documents): |
| 158 | 163 | if color == 0xff000000: |
| 159 | 164 | assert native_color in ('automatic', None), 'Native automatic color changed' |
| 160 | 165 | else: |
| 161 | assert ImageColor.getrgb(native_color) == (18, 52, 86), 'Native color differs from intent' | |
| 166 | assert ImageColor.getrgb(native_color) == (color & 255, (color >> 8) & 255, (color >> 16) & 255), 'Native color differs from intent' | |
| 162 | 167 | checks += 3 |
| 163 | 168 | return checks |
tools/test_formatted_insertion.py created+57| ... | ... | @@ -0,0 +1,57 @@ |
| 1 | import json | |
| 2 | from pathlib import Path | |
| 3 | import runpy | |
| 4 | import shutil | |
| 5 | from tempfile import TemporaryDirectory | |
| 6 | import unittest | |
| 7 | import xml.etree.ElementTree as ET | |
| 8 | ||
| 9 | from native_format import native_characters | |
| 10 | from native_xml import ns | |
| 11 | ||
| 12 | ROOT = Path(__file__).resolve().parent.parent | |
| 13 | FIXTURE = ROOT / 'corpus/formatted-insertion' | |
| 14 | compare = runpy.run_path(str(ROOT / 'tools/verify-document.py'))['compare'] | |
| 15 | ||
| 16 | ||
| 17 | class FormattedInsertionTest(unittest.TestCase): | |
| 18 | def test_cold_native_content_and_formatting(self): | |
| 19 | manifest = json.loads((FIXTURE / 'manifest.json').read_text()) | |
| 20 | for case in manifest['cases']: | |
| 21 | with self.subTest(case=case['name']), TemporaryDirectory() as temporary: | |
| 22 | fixture = FIXTURE / case['name'] | |
| 23 | native = Path(temporary) / 'read' | |
| 24 | shutil.copytree(fixture / 'cold/read', native) | |
| 25 | compare(fixture / 'candidate', native) | |
| 26 | with TemporaryDirectory() as temporary: | |
| 27 | fixture = FIXTURE / 'empty/typed-after-cold' | |
| 28 | native = Path(temporary) / 'read' | |
| 29 | shutil.copytree(fixture / 'read', native) | |
| 30 | compare(fixture / 'candidate', native) | |
| 31 | ||
| 32 | def test_native_edits_preserve_the_observed_character_styles(self): | |
| 33 | manifest = json.loads((FIXTURE / 'manifest.json').read_text()) | |
| 34 | for case in manifest['cases']: | |
| 35 | for variant, before_file, prefix in [('reverse', 'edit-before.xml', 'Native '), | |
| 36 | ('ui', 'before-read/page-000.xml', 'UI ')]: | |
| 37 | if variant + '_sha256' not in case: | |
| 38 | continue | |
| 39 | with self.subTest(case=case['name'], variant=variant), TemporaryDirectory() as temporary: | |
| 40 | fixture = FIXTURE / case['name'] / variant | |
| 41 | native = Path(temporary) / 'read' | |
| 42 | shutil.copytree(fixture / 'read', native) | |
| 43 | compare(fixture / 'notebook', native) | |
| 44 | before = ET.parse(fixture / before_file).getroot() | |
| 45 | after = ET.parse(native / 'page-000.xml').getroot() | |
| 46 | expected = native_characters(before, before.findall('one:Outline', ns)) | |
| 47 | changed = 0 | |
| 48 | for index, paragraph in enumerate(expected): | |
| 49 | if ''.join(char for char, _ in paragraph).startswith(('Bold ', 'Typed ')): | |
| 50 | expected[index] = [(char, paragraph[0][1]) for char in prefix] + paragraph | |
| 51 | changed += 1 | |
| 52 | self.assertEqual(changed, 1) | |
| 53 | self.assertEqual(native_characters(after, after.findall('one:Outline', ns)), expected) | |
| 54 | ||
| 55 | ||
| 56 | if __name__ == '__main__': | |
| 57 | unittest.main() |
tools/test_offline_document_history.py+28| ... | ... | @@ -60,6 +60,34 @@ class DocumentHistoryTests(unittest.TestCase): |
| 60 | 60 | events.remove(next(row for row in events if row['event'] == name)) |
| 61 | 61 | with self.subTest(event=name), self.assertRaises(AssertionError): document_history(logs, 2) |
| 62 | 62 | |
| 63 | def test_formatted_insertions_are_atomic_in_every_observed_snapshot(self): | |
| 64 | for events in self.logs.values(): | |
| 65 | for row in events: | |
| 66 | insertion = row.get('insertion') | |
| 67 | if insertion: | |
| 68 | insertion['formats'] = [{'guid': list(uuid.uuid4().bytes_le), | |
| 69 | 'range': {'start': 0, 'end': len(insertion['text'].encode('utf-16-le')) // 2}, | |
| 70 | 'attributes': [{'FontSize': 13.5}, {'Color': [68, 85, 102]}]}] | |
| 71 | for key in ('documents', 'document_changes'): | |
| 72 | for document in (row.get(key) or {}).values(): | |
| 73 | for run in document['runs']: | |
| 74 | if run['size'] == 11: | |
| 75 | run['size'] = 13.5 | |
| 76 | run['color'] = 0x665544 | |
| 77 | documents = document_history(self.logs, 2) | |
| 78 | paragraphs = [[(char, {'bold': bold, 'font_size': size, | |
| 79 | 'color': '#123456' if color == 0x563412 else '#445566'}) | |
| 80 | for char, bold, size, color in row['new']] for row in documents.values()] | |
| 81 | self.assertEqual(verify_native(paragraphs, documents), sum(len(row['new'])*3 for row in documents.values())) | |
| 82 | baseline = copy.deepcopy(self.logs) | |
| 83 | for event, key in [('remote_attempt', 'document_changes'), ('read', 'documents')]: | |
| 84 | for field, value in [('size', 11), ('color', 0xff000000)]: | |
| 85 | logs = copy.deepcopy(baseline) | |
| 86 | row = next(row for row in logs['w0'] if row['event'] == event) | |
| 87 | next(iter(row[key].values()))['runs'][0][field] = value | |
| 88 | with self.subTest(event=event, field=field), self.assertRaises(AssertionError): | |
| 89 | document_history(logs, 2) | |
| 90 | ||
| 63 | 91 | def test_retired_format_receipt_requires_current_revision_and_exact_observed_effect(self): |
| 64 | 92 | events = self.logs['w0'] |
| 65 | 93 | attempt = next(row for row in events if row['event'] == 'remote_attempt' and row['revision'] == 'revision-3') |