Say what a timestamp tie actually does to the toggle

The tie test claimed the local record only repeated the server value, but
it fixtures opposing toggles stamped at the same instant, so name it for
the rule it proves. Note beside the strategy why that tie needs no
deterministic tiebreaker: no writer stamps these settings with a fixed
epoch date, unlike accounts and data contexts.
This commit is contained in:
Arkadiusz Fal
2026-09-08 23:49:43 +02:00
parent e0f6b5e6d4
commit bb6e98f9d2
2 changed files with 5 additions and 1 deletions

View File

@@ -341,6 +341,10 @@ actor CloudKitConflictResolver {
/// - Last write wins based on updatedAt timestamp — the same rule
/// `DataManager.upsertChannelNotificationSettings` applies on arrival, so a
/// record that wins the upload is never refused by the other device.
/// - An exact tie keeps the server value and needs no deterministic
/// tiebreaker: unlike accounts and data contexts, no writer stamps these
/// settings with a fixed epoch date, so a tie is an accident of the clock
/// rather than something migration produces on every device.
/// - Preserve server recordChangeTag
func resolveChannelNotificationSettingsConflict(
local: CKRecord,

View File

@@ -197,7 +197,7 @@ struct CloudKitSyncTests {
#expect(resolved["updatedAt"] as? Date == Date(timeIntervalSince1970: 2_000))
}
@Test("A local record that only repeats the server value leaves it untouched")
@Test("Equal timestamps keep the server value")
@MainActor
func equalTimestampsKeepServerValue() async throws {
let mapper = CloudKitSyncTests.makeMapper()