Hi Alessandro,
What you are seeing is the expected behaviour in the field app. Read only questions can not be refreshed if the calculation changes (no refresh button is displayed) and this is expected as the question is set to read only, meaning it can not be changed by the user. This applies to new Collect, Drafts, Sent and Inbox surveys if survey is opened again and had a previous value or null value. Therefore applying required to read only questions can be problematic if you expect the calculation to change and be updated.
The workaround to the above is to not make that username field read only, that way the user can refresh the calculation if it changes, and you can keep it required, so that when the user signs in before sending, after collecting data offline and saving to drafts, they can open the survey from drafts, refresh the username calculation, and then submit.
Note the property() function, including property('username') is no longer supported in the field app and has been removed from the documentation, as it is not supported in the web app. The property() function may continue to work in the field app however, but there may be some known limitations and it could eventually stop working with updates to the field app in the future, so beware using it.
The other option to capture the current signed in username is using the username question type. This question type does the same function as the property('username'), it is supported in both field app and web app, and is hidden on the form by default. However, the downside of it being hidden always is the question can not be refreshed manually as it is not visible for user interaction. Also, the same problem you have encountered above also occurs with username question type when a user is offline. If you are offline when first open the survey and not signed in, this field will be populated with null, and then never gets updated again. A bug has been raised for this and we have an internal issue to track and try to improve this behaviour so that it can be automatically update when null. The public bug number is BUG-000113164 and I have also updated the internal issue with your comments and use case.
Hope this helps.
Phil.