So the filter is running, but your setting of readonly is not sticking. The only explanation for this is that something else is changing the setting after you set it.
This means that some other filter that can change the field is running after yours. This can be either an “acf/load_field” or “acf/prepare_field” filter. My next step would be to do a search of the entire site for both of these and see if I find anything that might be effecting the field.
Setting a priority of 20 will eliminate ACF being the cause of interference.
Welcome to the Advanced Custom Fields community forum.
Browse through ideas, snippets of code, questions and answers between fellow ACF users