I've found the source of my issue and thus resolved it.
In my method that adds my domain models to the sync engine's state as PendingRecordZoneChanges, I was mapping my model's IDs to a CKRecord.ID's record name, but I forgot to include the zoneID in the initializer for the record ID. This is what caused the sync engine to continuously send sync events.
My guess is that because my pending changes did not include the zone ID, the local and server records were considered different and thus the engine would keep trying to sync. Curiously, it still populated in the proper zone when I checked the cloudkit console.
Topic:
App & System Services
SubTopic:
iCloud & Data
Tags: