| 1 | # OneNote 2010 drops outline elements written with `{guid},0` identities |
| 2 | |
| 3 | `dropped/candidate/four.one` is one of six identical-content builds of the |
| 4 | ten-equation page (`equations_are_written_and_read_back`); only this build |
| 5 | came back from OneNote 2010 with an empty outline element (`dropped/cold`: |
| 6 | the fifth equation `x_i^2` has no content, alignment or style). The object |
| 7 | bytes, identity tables, run data, styles, revision manifest and transaction |
| 8 | log are identical in shape to the builds that rendered, the drop is |
| 9 | deterministic for a given file, and across thirty builds written with the |
| 10 | model's `{random guid},0` identities seven lost one element each, always an |
| 11 | outline element, at varying positions. OneNote never stores an object as |
| 12 | `{guid},0` (its own objects are `{page guid},n` with `n` from 1); after |
| 13 | `page::text::new_id` moved to `n` 1, eighteen builds and the written |
| 14 | candidate (`../written`) rendered every paragraph. |
| 15 | |
| 16 | `relocated/candidate` is the dropped build with only that element's 56-byte |
| 17 | data chunk copied to the end of the file and the declaration retargeted; it |
| 18 | rendered (`relocated/cold`), so the loss also depends on where the data |
| 19 | sits, which is consistent with the identity being mishandled in a |
| 20 | position-keyed structure rather than being rejected outright. The |
| 21 | transaction writer additionally keeps native files' 1 KiB reservation after |
| 22 | a transaction-log fragment that ends the file, so no object data abuts the |
| 23 | log. |