Fields
3 of 8 selectedGeneral
Permitted for your roleRestricted
Not permitted for your rolePreview
5 of 185 rowsFive synthetic rows, rebuilt from your selection. Nothing is queried and nothing is stored — but the shape is real: a saved report holds the list of fields you picked, never a copy of the results and never a resolved list of columns. When somebody else opens it, it resolves against their rights, not yours.
Why the lock is not in this browser
Hiding a field in the interface protects nothing. The same value comes back through an export, an interface response, or a report somebody builds a slightly different way. So the restriction lives one layer down: restricted data sits in a separate part of the database, and the account this application uses to run your reports has no privileges there at all. If every line of our code were wrong, the query would fail with a permission error instead of returning a column.
One honest limit
We can prove that no field classified as restricted ever reaches a role that may not see it — that is a property of the database, and it is testable automatically every time the code changes. We cannot prove that nobody ever typed a pay figure into a general-purpose notes field. That gap is closed by governance rather than architecture: classification is mandatory when a field is created, changing a field's classification physically moves the data and is recorded, and making restricted data visible again needs a second approval.
One related item is worth flagging now rather than at handover: your BambooHR custom fields have accumulated over years, and any of them could hold something sensitive. Every inbound field gets classified before import, and an unclassified field stops the import rather than defaulting to general.