(This is for future reference, when this sort of problem arises again.)
Last spring I started working on a pair (macOS, iOS) of personal utility applications. They relied on CloudKit storage. For months they worked well together. Then, as soon as I updated to macOS 13 Ventura, they stopped syncing.
I fired up
Xcode to try to diagnose the problem. But when run under
Xcode, the app synced without issue.
I made an archive build for the macOS run destination. When I ran the resulting app, the problem returned.
/Application/Utilities/Console showed messages for the archive build that indicated a missing entitlement, one for reading a CloudKit preferences file. But I couldn't figure out where the file resided.
I turned off App Sandbox for the app. The resulting archive build was able to sync again.
Another user of the Apple Developer Forums had encountered the same problem. A couple of weeks later, they posted the solution:
CloudKit.framework has to be included in the app target's "Frameworks, Libraries, and Embedded Content" section.
Huh. I could have sworn I added that framework when I created the project as a CloudKit-hosted, Core Data project.
CloudKit.framework was not in the list of frameworks.1
I added it, and reverted the app to use the App Sandbox. Now it is sycing successfully. Many thanks to mjmsmith!
It's odd that
Xcodedidn't add it, considering the options I'd selected for the new project. ↩