feat: notebook structure, change detection, link resolution, reviewed release of uncertain saves

Table of contents editing (`onestore::TocEdit`, `PreparedEdit::table_of_contents`) adds,
renames, colours, orders and removes section and group entries as one revision, and
`notebook::session::Notebook` creates sections and groups, renames, colours, reorders and
deletes into `OneNote_RecycleBin` the way OneNote does. Two writer rules came out of the
cold reads: OneNote re-identifies any file whose header ancestor is not the parent TOC's
identity or whose name CRC is not its file or folder name (`onestore::place_file` sets
both on create, rename and delete), and a TOC revision manifest carries one global id
table, or OneNote applies a revised entry's order to the wrong entry.

`Notebook::refresh` now reports what another client changed, keyed by file identity
(`Change::{Added, Removed, Moved, Reordered}`), keeping the last catalog when the
notebook is unreachable. `page::link::parse_internal_link` and `Notebook::find_page`
resolve stored links by identity across renamed, moved and stale sections. A stored
attachment's shown name, source path and icon size edit in place. With the `protected`
feature, `Notebook::unlock` reads a locked section's pages.

An uncertain publication is released by review, never replay: `Replica::release_attempt`
(`Section::release`) exports the branch to a new archive, then either continues from a
reviewed page under the same id or abandons the branch, whose ids report
`EditStatus::Archived { archive }` (cache schema 13). No receipt is ever written for the
uncertain attempt.

Cold reads: `corpus/notebook-edit/{structured,deleted}` (written order, colours, recycle
bin, stable identities), `corpus/notebook-edit/native-reorder` (COM cannot reorder),
`corpus/attachment-edit/renamed`.

Assisted-by: claude-fable-5.1
75e67fc117clover caruso committed on 9/26/2026, 3:26:20 AMparent5b4f04b
64 files changedLine totals unavailable