TwinEthosRequest access

Control

No documented fairness/bias evaluation of AI

AI systems making decisions about people should be evaluated for harmful bias, with results documented.

Informational data, not legal advice. Summaries are TwinEthos's own words and rules have not been reviewed by a lawyer: check the official text before relying on any of it. A guard addresses an item; adding it is not a statement that your code meets any law.

Family: AI is used without bias, fairness, or proxy-discrimination controls · control id cond.no-fairness-bias-evaluation

Reach

1items this one guard addresses
0jurisdictions where binding law on it is in force
0more where it is enacted, not yet applying
1standards and frameworks on the same control

The guard to add

Run and keep a documented fairness evaluation of the AI decision system, with per-group results, the method used, and the decision taken on each gap.

A fairness evaluation report owned by the system owner and kept with each model version (reports/fairness/<model_version>.md or the model card): which groups were evaluated, the metrics (selection rate, error-rate gaps, disparate-impact ratio), the data used, the results, the thresholds, and the mitigation or acceptance decision with who signed off. It is refreshed at each release and on a set cadence. Where the code can show it, fairness tests in the test suite assert that metrics stay within the agreed thresholds, and a CI check confirms a report exists for the version being deployed.

Where it goes: 11 CI/CD pipeline, 12 repository artifacts, 13 tests and evals.

What reviewers look for: a report tied to the deployed model version with per-group numbers and a recorded decision on each gap, fairness tests in the suite rather than only aggregate accuracy, and a date recent enough to cover the current model and data.

Organizational control: the evidence is a kept record, its owner and its upkeep, not code.

Example (pytest + fairlearn), before:

def test_model_accuracy():
    assert accuracy_score(y_test, model.predict(X_test)) > 0.85

After:

def test_model_accuracy():
    assert accuracy_score(y_test, model.predict(X_test)) > 0.85

def test_selection_rate_ratio_by_group():
    y_pred = model.predict(X_test)
    mf = MetricFrame(metrics=selection_rate, y_true=y_test, y_pred=y_pred,
                     sensitive_features=A_test)
    assert mf.ratio() >= MIN_SELECTION_RATIO, mf.by_group.to_dict()   # threshold from the evaluation plan

Engineering guidance, not legal advice. Each provision below may add its own details (a cadence, a deadline, a required notice element): open it for those.

Every rule this guard addresses

Standard / soft law (1)

Related incidents

No guardrail sits on this exact control; these incidents are cited by guardrails on related controls.