Every field on an FLS-enabled entity that the system user cannot fully use.
The backstop for state the save-time guard never saw: direct SQL, a migration, or a save made
while the user cache was cold. Walks loaded metadata only — no queries — and skips entities with
field security switched off, which is nearly all of them.
With WithoutRoleID (the role-removal guard) an entity with field security switched off is
judged too, on the fields that carry rules: those rules are dormant, not gone, and apply again
the moment field security is re-enabled, so skipping them would let "disable, remove the role,
re-enable" strip the system user's access with no refusal anywhere. Such a field is reported
only when the removal itself costs the access, never for a shortfall that already existed.
Every field on an FLS-enabled entity that the system user cannot fully use.
The backstop for state the save-time guard never saw: direct SQL, a migration, or a save made while the user cache was cold. Walks loaded metadata only — no queries — and skips entities with field security switched off, which is nearly all of them.
With
WithoutRoleID(the role-removal guard) an entity with field security switched off is judged too, on the fields that carry rules: those rules are dormant, not gone, and apply again the moment field security is re-enabled, so skipping them would let "disable, remove the role, re-enable" strip the system user's access with no refusal anywhere. Such a field is reported only when the removal itself costs the access, never for a shortfall that already existed.