Note tags on paragraphs and text objects, and the tag definitions the page model carries, are differences the page writer now lowers. A property-set array writer joins the property patcher: an encoded array of sets is inserted whole with its nested object references appended to the reference stream in traversal order, which is where a rewritten tag array sits. The writer rewrites an element's tag array from the model (definition reference, action type, status, creation, completion, start and due dates and task id), creates definition objects for definitions new to the section under writer identities that squash renames to the model's, and refuses a second tag with the same action type on one element as OneNote does. The model mutation driver toggles tags. corpus/tag-edit is the native gate: a Rust-authored page with two definitions and open, completed, doubly tagged and untagged paragraphs, cold-read by OneNote 2010 with the definitions, completion states and dates intact; tools/test_tag_edit.py checks it without a VM. Assisted-by: claude-fable-5.1
clover caruso committed on 9/13/2026, 12:00:32 AMparent8a86e3a
24 files changedLine totals unavailable