Table structure in the page model is a difference the writer now lowers. Native rows and cells are plain containers: a new cell carries the modification time, the indent array copied from a sibling cell and the flags every native cell has; a new row lists its cells; every table has its row and cell order rebuilt to the model, and its column count, widths (in inches), lock bitmap and border flag rewritten. A new table starts as an empty text paragraph placed like any other, whose content the structure pass replaces with the table before the deferred cell containers receive their paragraphs. Paragraphs of removed rows and cells are covered by the removal. Table identity, layout and tags, and cell layout, indents and shading stay fixed; an emptied cell keeps the replacement paragraph the tree writer provides. corpus/table-edit is the native gate: a Rust-created two-by-two table on a fresh page, and a native table on the tree fixture with a third column and a second row added, both cold-read by OneNote 2010 with widths, locks, borders, rows and cell text intact; tools/test_table_edit.py checks both without a VM. Assisted-by: claude-fable-5.1
clover caruso committed on 9/13/2026, 12:00:32 AMparent8b4f45b
48 files changedLine totals unavailable