How declared-first screening works
The screen covers two declared attributes, using the enum values below (lowercase). Gender follows the NALSA three legal categories; caste category is the one applicants already declare on priority-sector and scheme lending.
Per attribute, the screen computes group approval rates, the gap in percentage
points against the largest declared group, and a disparate-impact ratio against
that group. A group is flagged only when both of these hold:
- a threshold breach: the disparate-impact ratio is below
0.8(the four-fifths convention) or the approval gap is at least5pp; and - significance: a two-proportion z-test gives
|z| >= 2.0.
20 decisions in the window are suppressed and
surfaced, never silently dropped: silence and erasure are different things.
1
Declare attributes when you witness
The screen reads from the flight recorder, so declared attributes must be on
the decision record. The wire contract is
context.declared. Values outside
the enums are recorded as undisclosed, they are never imputed.Declared values are ordinary decision context: they are tokenized and
scrubbed like any other field, and the screen works over the group labels,
never over an individual. See
PII tokenization.
2
Read the live screen
The declared screen is computed live over the production decision stream.
Pass The response reports each attribute’s groups with their approval rates,
A top-level
agent_id to scope it to one agent.gap_vs_reference, di_ratio, z_score, and a flagged boolean, plus the
suppressed cohorts and the thresholds in force.Response (excerpt)
flag of null means nothing was declared and the screen is
underpowered, which is itself worth acting on.3
Run a pre-deploy screen
Screen a batch of candidate decisions with declared attributes before the
agent is live. The stored result is a citable artifact that evidence packs
reference by id. This is a governance act, so it needs an OIDC JWT.
4
Read the result
The pre-deploy run scores the batch with the same engine as the live screen,
so a flag means the same thing: a real, significant disparity, not noise.
Read
flag for the overall verdict, attributes.<name>.flagged_groups for
the specific groups, and suppressed for cohorts that need a larger sample
before the run can speak to them. The caveats block travels inside every
result and should travel with any conclusion drawn from it.The significance gate here uses a two-proportion z-test. Sakshi’s model and
agent eval-run store applies the same “do not overclaim on thin data”
discipline a different way: it gates a pass on the Wilson 95% confidence
interval’s lower bound, not the point estimate, so a strong score on a small
sample can still fail.
Next steps
Vidhi and Vishwas
Where fairness evidence feeds the regulator clause maps.
Generate an evidence pack
Include a pre-deploy fairness run in a signed regulator bundle.
Witness a decision
How declared attributes reach the flight recorder.
API reference
The full Vishwas endpoint surface.

