A fairness screen compares decision outcomes across groups, using attributes
somebody declared. It does not infer them, and the reason is not
squeamishness: an inferred protected attribute is a guess, and a fairness
finding built on a guess is worse than no finding.
Two rules run through all of it
A flag requires a threshold breach and statistical significance. A gap of
eight points on a cohort of eleven is noise. A screen that alarms on it teaches
people to close the tab, and the next alarm, the real one, gets closed too.
Those are reported as watch, not as a flag.
Small cohorts are suppressed, never dropped. Silence and erasure are
different things. A group too small to report on is named, counted out, and
given the threshold that would surface it, because the groups that fall below a
reporting threshold are frequently the groups the question was about.
Declarations come first
A declaration says: for this population, this attribute is available and lawful
to screen on. The lawfulness half is separate from the arithmetic half by
design. One module decides whether a screen may run at all; another does
statistics and assumes that question is already answered.
Running a screen
The result reports, per group: the outcome rate, the cohort size, and one of
flag, watch or suppressed. Decisions carrying no declaration are
reported as undisclosed rather than dropped, so the denominator is honest.
What a screen is and is not
A screen over declared attributes is not proof of fairness. It tells you the
rates for the people who told you, which is a self-selected group.A flagged cohort is not proof of discrimination. It is grounds for a
controlled analysis that somebody qualified performs.Both of those belong in the conversation before the first screen runs, not
after somebody has taken a chart to a regulator.
Why not infer the attribute
Because the platform would then be manufacturing the protected characteristic it
is reporting on, and every finding would rest on the quality of that inference
rather than on the data. A decision with no declaration is undisclosed. That
is a smaller answer and a true one.