| 1 | # Rust list authoring |
| 2 | |
| 3 | `candidate/` is the page writer's output for |
| 4 | `bullets_numbering_nesting_and_restarts_publish_on_a_fresh_page` in |
| 5 | `crates/onestore/tests/page_lists.rs`: on a section created in Rust, the first |
| 6 | paragraph gains a bullet (glyph U+25CB in Courier New, bullet index 4, 11 pt), |
| 7 | then two numbered paragraphs, a nested numbered child, a numbered paragraph |
| 8 | restarting at three, a nested plain paragraph and a trailing plain paragraph. |
| 9 | The numbering definition is the upper-roman `##.` node copied from |
| 10 | `corpus/outline-edit/tree`. Every list node is written with the model's |
| 11 | identity after squash, so the reread model equals the saved one. |
| 12 | |
| 13 | `cold/` is a fresh OneNote 2010 read: the bullet renders (reported as bullet |
| 14 | index 3 at 11 pt), the numbered paragraphs read `I.` and `II.`, the nested |
| 15 | child restarts at `I.`, the restarted paragraph reads `III.`, and the plain |
| 16 | paragraphs carry no list. `tools/test_list_edit.py` checks this without a VM. |
| 17 | |
| 18 | A list node whose compact identity would be the null identity (sequence zero |
| 19 | at table index zero) fails OneNote's integrity check on open; the writer |
| 20 | allocates list nodes like other new objects and renames them to the model's |
| 21 | identities in squash. Regenerate with `ONESTORE_LIST_EXPORT` set to a new |
| 22 | absolute directory while running the test, then cold-open it with |
| 23 | `tools/native_runner.py OUTPUT COLD --expected-pages 1 --collect-notebook`. |