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.