I’ll take a stab at this, and maybe I can shed some extra light on the topic. Apologies in advance if this reads condescending or patronizing, as neither is intended.
First, let me stipulate that I am not one of the developers. I’m just a devotee that has used Scrivener imperfectly for 12 years now, so I’m not an expert at all, and certainly can’t explain the file structure past the simple observations I’ve made over the years.
Second, have you ever looked at the contents of the .scriv files Mac version makes? It’s not one file, but a CONTAINER filled with files and folders some of which are nested several levels deep, not all of which hold your words. There are XML files, RTF files, and a miscellany of bespoke files that tell Scrivener how you have all of your settings, preferences, and themes setup and so forth.
It’s not like the 8bit days when you just stuffed everything into a plain text file and saved it by itself. If so, it would be trivial to lock and unlock at need. The main strength of Scrivener is its ability to work on very large projects, the thing is how it does it is a lot different than most people think.
Even if Scrivener used the Master Document schema that was developed in the mid aughties, locking the individual files soft-linked to the Master Document would be doable. Scrivener cross references things in odd ways that would do nothing but cause issues in multiple places EVERY TIME any LOCK is TOGGLED. Imagine if this process was ongoing WHILE dropbox was syncing and you loose internet? (say because you closed your lid before the sync was finished) This isn’t the worst case, but its a reasonably common occurrence the support folks deal with now.
It’s easy to foresee a situation in which the editor thinks an item is locked, but the file thinks it is unlocked, and the index isn’t of help because its out of date. The user can’t edit the file, and worse when the COMPILE function runs, none of the transforms are applied and they end up with a mess that they can’t figure out how it got mangled. Worse, there are no diagnostic tools for the user to apply, but worst of all such a mismatch would require access to the files to fix and not something to easily walk the average computer user through over email.
Before you run to your keyboard to start an ‘ACHUALLLY…’ post, do this… Open a copy of the tutorial project and save a copy, then open the .scriv of the copy and have a look inside and see what you can make out of the mess inside. If you only knew how the sausage was made, you’d not claim it would be easy to add this feature.