View Single Post
An OmniFocus file is actually a package containing several .zip files and (if it's the server copy) .client files. When a client syncs, it is adding a new .zip file and a new .client file.

A client can also delete its own older .client files, but only ones that are more than an hour old and never its newest one, no matter how old it is.

A client can also coalesce (aka "smoosh") older .zip files into one bigger .zip file, but it will only do this for .zip files that are older than the oldest .client file. So the .client files kind of serve as the lock, but they don't keep other clients from getting and pushing new data, only from coalescing old data.
On the other hand, OmniFocus has fairly coarse-grained conflict resolution. If I change the same task on two different machines, without syncing in between, when the syncs finally do happen, one of those changes will be thrown away.