diff --git a/arc/sync.md b/arc/sync.md index d1cc0173d78461f62b9cd32afb0cf0f7b0e91c02..690824b4e8c1b5ecca9d93de10b69e104d3ad9ad 100644 --- a/arc/sync.md +++ b/arc/sync.md @@ -286,12 +286,14 @@ for each version V the remote lists (Remote::versions) revisions, publish on C's stamp; then retire V (resolved, removed) ``` -Each revision the merge writes is named after the version's revision it merged (a hash of it), -so "holds merged" is a lookup by revision identity. A version merged once, by this device or -another, merges as nothing the next time; two devices merging one version at once write the -same names, and the merge of their two results finds everything held. Any device merges any -version at once; nothing waits for the device that wrote it. A version of another section, or -one that cannot be read, is kept beside the file as `Name (Device).one` instead. +Merged page revisions and conflict page identities are named after the incoming version's +revision (a hash of it), so "holds merged" is a lookup by revision identity. A version merged +once, by this device or another, merges as nothing the next time. Two devices merging the same +version onto the same current page state name corresponding outcomes alike. This deduplicates +retries; it does not make integrations from opposite primary bases order-independent or +produce byte-identical files. Any device merges any version at once; nothing waits for the +device that wrote it. A version of another section, or one that cannot be read, is kept beside +the file as `Name (Device).one` instead. On a cloud drive every read and write of a section file runs under `NSFileCoordinator`, so the iCloud daemon never swaps a file between the stamp check and the append. A file iCloud evicted