| FR-001 |
Upload models (.h5/.pt/.pkl) |
ethiclens_api/ingestion.py + POST /api/models/upload (sandboxed) |
TS-FUNC-001 โ test_models_and_governance.py |
โ
|
| FR-002 |
Synthetic personas, configurable |
fairness_core.profiles.generate_profiles |
TS-UNIT-002 โ test_generator.py |
โ
|
| FR-003 |
Compute DI / SPD / EO + composite |
fairness_core.metrics, audit.run_audit |
TS-UNIT-001/003/004 โ test_metrics_known_values.py |
โ
|
| FR-004 |
Create audit session |
audit_session table + POST /api/sessions/create |
TS-FUNC-002 โ test_sessions_e2e.py |
โ
|
| FR-005 |
Ranked mitigations where DI<0.8 |
fairness_core.mitigation.recommender + GET /api/sessions/{id}/recommendations |
TS-INT-002, TS-FUNC-004 โ test_mitigation.py, test_sessions_e2e.py |
โ
|
| FR-006 |
Explanation + estimated impact |
mitigation.recommender |
TS-FUNC-004 โ test_mitigation.py |
โ
|
| FR-007 |
Fairness Scorecard PDF |
fairness_core.reporting.scorecard + GET /api/sessions/{id}/report (ReportLab) |
TS-FUNC-003 โ test_reporting.py, test_sessions_e2e.py |
โ
|
| FR-008 |
Escalation workflow |
descoped โ sign-off (FR-010) is the governance gate |
TS-UAT-001 |
โฌ descoped |
| FR-009 |
Re-audit after mitigation |
parent_session_id lineage + POST /api/sessions/{id}/mitigate |
TS-UAT-002 โ test_sessions_e2e.py |
โ
|
| FR-010 |
Governance sign-off portal |
POST /api/sessions/{id}/sign-off (RBAC) |
TS-UAT-003 โ test_models_and_governance.py |
โ
|
| FR-011 |
Lock + clearance notification |
server-enforced lock โ
; notification is a log line only (routers/governance.py) |
TS-UAT-003 โ test_models_and_governance.py |
๐ก lock done, notifier roadmap |