# feat: save edited page models to the local replica · clo/snowbound

[View on GitCafe](https://git.cafe/clo/snowbound/commit/59f5163e0c2a80a4addceedf0e3f4bc3b6c235c3)

Repository: [clo/snowbound](https://git.cafe/clo/snowbound)

Visibility: public

Requested revision: 59f5163e0c2a80a4addceedf0e3f4bc3b6c235c3

Requested commit: 59f5163e0c2a80a4addceedf0e3f4bc3b6c235c3

Commit: 59f5163e0c2a80a4addceedf0e3f4bc3b6c235c3

Tree: 71e646ce3ab8c16345981d6d10be7b7dbcfdc7e5

Author: clover caruso

Committer: clover caruso

## Message

```
feat: save edited page models to the local replica

Add Operation::Page: a PageIntent records the page model the editor started
from, the model it produced and the author. Replica::save publishes the
difference locally through PreparedEdit::page and, while the newest pending
edit is an unattempted save of the same page, replaces that save instead of
queueing another publication, matching OneNote's own save interval
(evidence/m10/NATIVE-SAVE-CADENCE.md). Reconciliation compares the remote
page with the recorded model: an unchanged page publishes, a changed one is a
ContentChanged conflict that review_page resolves with a model reviewed
against the remote image. The page model and the document types it embeds
gain Clone and serde support; image payloads are identified by their id and
left out of equality and serialization.

Validation: six new sync tests (publication, coalescing, immutability of an
attempted save, conflict and review, independence between pages, reopen);
329 notebook and onestore tests, Clippy and fmt.

Assisted-by: claude-fable-5.1

```

## Parents

- [09ee1d6454d9862cd2b895fea88eee8541e6caaf](https://git.cafe/clo/snowbound/commit/09ee1d6454d9862cd2b895fea88eee8541e6caaf?format=markdown)

[Source at this commit](https://git.cafe/clo/snowbound/tree/59f5163e0c2a80a4addceedf0e3f4bc3b6c235c3?format=markdown)
