I think the problem is that it needs to be unjammed via a force eviction.
My answer references the User Dictionary, related to Text Input, as a concrete example. This answer has many specific path names which I have kept so it is easy to see context and structure of files/directories, but your paths will be different.
Blogger AtomicBird has looked into iCloud mechanics and shows that the metadata file comes from the baseline.zip
file, which can be found and expanded:
find ~/Library/Mobile\ Documents -name baseline.zip
cd $HOME/"Library/Mobile Documents/com~apple~TextInput/Dictionaries/.baseline/UserDictionary"
cd SAlQVUhF7208e6_gvZx_zdKx1U1AzKGem3HO2pLKjgY=
I have file baseline.zip
under subdirectory SAlQVUhF7208e6_gvZx_zdKx1U1AzKGem3HO2pLKjgY=
in my case.
Unzipping the baseline.zip
file shows the metadata in question. If you have the plistutil tool (via brew package manager) you can see its contents:
plistutil -i metadata
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>$version</key>
<integer>100000</integer>
<key>$objects</key>
<array>
.
.
The contents are not documented officially.
When the problem occurred, it must have been related to the contents of this file. The iCloud sync logic has much improved over the last few years but it is still not perfect.
When things are jammed up, we need to force the system to get a fresh file from iCloud.
It is possible to force this via a command line tool, brctl
with the evict
operation. For example:
brctl evict "/Users/faisalm/Library/Mobile Documents/com~apple~TextInput/Dictionaries/faisalm~79CD0053-95EA-5F84-9773-5D1269B74D13/UserDictionary"
It is also possible to then use the brctl dump
command to see how it managed to sync up. I have in my output the snippet referencing UserDictionary
:3 queries: metadata:idle etag:hg apps:{} InCloudDocsZone bundles:{com.apple.inputmethod.TCIM, com.apple.Preferences, com.apple.InputMethodKit.UserDictionary, com.apple.InputMethodKit.TextReplacementService, com.apple.kbd, com.apple.inputmethod.SCIM}>
Once unjammed, it should work ok.