1# Automatic titles after outline movement
2
3Three native pages distinguish vertical ordering, horizontal ordering and an
4explicit title. Moving the second outline ahead of the first changes the two
5automatic titles to `Second 🦋 é`; the explicit title remains unchanged.
6
7`before` is the native source. `native` records the corresponding COM moves and
8an independent cold reopen. `candidate` is the Rust edit; `cold` is its independent
9OneNote reopen. Cold captures preserve exact active graphs. Rust movement retains
10all text identities, content, formatting and history. Identical artifacts link
11to one copy; `provenance.json` records the native runs and clone teardown.
12
13The Rust regression originally left both automatic-title fields unchanged.
14Position edits now update the existing page and metadata caches within the same
15revision as the coordinates. The offline regression additionally changes the
16remote title-producing text, loses the publication reply and reopens the cache
17before confirmation and a dependent edit.
18
19Run `tools.test_outline_edit.OutlineEditTest.test_automatic_titles_follow_native_and_rust_outline_movement`
20through Python unittest after building the workspace examples with all features.
21The Rust test `native_automatic_and_explicit_titles_follow_outline_movement` can
22export a new candidate directory through `ONESTORE_OUTLINE_TITLE_OUTPUT`.
23
24To regenerate the native controls, copy `fixture.json` and the synthetic section
25from `corpus/native-delete/deletion-05/before` into a new input notebook directory.
26Capture it with `tools/native_runner.py --author tools/native/pages.ps1
27--collect-notebook`. Capture that result's notebook with
28`--author tools/native/outline-title.ps1 --collect-notebook`, then independently
29cold-open both the native result and the Rust candidate without an author script.