I want to create an "update opt-in" collection that is in general read-only but some specific fields can be updated.
As far as I understand access control is cascading downwards from parents to their nested fields. If I disable update for an entire collection, all it's fields will be disabled no matter what their individual update function does.
The same applies for any container fields like arrays, blocks fields etc: Disabling update on the array does restrict all editing directly affecting the array, like creating and moving rows. But it also locks any editing within the array rows.
That's unfortunate for me because I would like to create a block for example that contains an array field. This should be set up by an "admin". If an "editor" edits this later, they should not be able to change the blocks order, add new blocks or array rows. They should only edit the "leaf" fields inside those containers.
Is this not supported by default? Only option I see so far is leaving the actual access control open but enforcing these rules with field level hooks. But this has significantly worse UX that I would have to counteract with custom UI components.
Am I missing something?