Spaces:
Running
Running
Deploy ReguAI: Neuro-Symbolic AI GRC & Automated Conformity Assessment Engine
Browse files- .gitignore +12 -0
- api.py +57 -8
- app.py +90 -25
- data/active_learning_triplets.jsonl +6 -0
- data/benchmarks/case_studies_catalog.json +740 -0
- data/benchmarks/provenance_ledger.json +8 -1
- data/synthetic_systems/critical_infra_smart_grid.json +13 -0
- data/synthetic_systems/education_remote_proctoring.json +13 -0
- data/synthetic_systems/justice_recidivism_risk.json +13 -0
- data/synthetic_systems/limited_risk_customer_bot.json +13 -0
- data/synthetic_systems/minimal_risk_spam_filter.json +13 -0
- data/synthetic_systems/prohibited_social_scoring.json +13 -0
- data/synthetic_systems/transport_autonomous_braking.json +13 -0
- scripts/build_case_studies_catalog.py +502 -0
- src/core/case_catalog.py +199 -0
- src/extraction/parser.py +37 -5
- src/reasoning/shacl_engine.py +14 -1
- tests/test_api.py +26 -0
- tests/test_case_catalog.py +112 -0
.gitignore
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
__pycache__/
|
| 2 |
+
*.py[cod]
|
| 3 |
+
*$py.class
|
| 4 |
+
.pytest_cache/
|
| 5 |
+
.venv/
|
| 6 |
+
venv/
|
| 7 |
+
ENV/
|
| 8 |
+
.env
|
| 9 |
+
.idea/
|
| 10 |
+
.vscode/
|
| 11 |
+
*.swp
|
| 12 |
+
.DS_Store
|
api.py
CHANGED
|
@@ -161,16 +161,59 @@ def evaluate_specification(request: AuditRequest):
|
|
| 161 |
raise HTTPException(status_code=500, detail=f"Conformity assessment failed: {str(e)}")
|
| 162 |
|
| 163 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 164 |
@app.get("/api/v1/audit/samples", tags=["Benchmarks"])
|
| 165 |
def list_benchmark_samples():
|
| 166 |
-
"""Returns available
|
| 167 |
-
|
| 168 |
-
|
| 169 |
-
|
| 170 |
-
|
| 171 |
-
|
| 172 |
-
|
| 173 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 174 |
|
| 175 |
|
| 176 |
@app.get("/api/v1/audit/samples/{sample_id}", tags=["Benchmarks"])
|
|
@@ -178,6 +221,12 @@ def get_sample_content(sample_id: str):
|
|
| 178 |
"""Retrieves full specification content for a sample."""
|
| 179 |
file_path = SYNTHETIC_DIR / f"{sample_id}.json"
|
| 180 |
if not file_path.exists():
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 181 |
raise HTTPException(status_code=404, detail="Sample not found.")
|
| 182 |
data = json.loads(file_path.read_text(encoding="utf-8"))
|
| 183 |
return data
|
|
|
|
| 161 |
raise HTTPException(status_code=500, detail=f"Conformity assessment failed: {str(e)}")
|
| 162 |
|
| 163 |
|
| 164 |
+
from src.core.case_catalog import CaseStudyCatalog
|
| 165 |
+
|
| 166 |
+
catalog = CaseStudyCatalog()
|
| 167 |
+
|
| 168 |
+
|
| 169 |
+
@app.get("/api/v1/benchmarks/catalog", tags=["Benchmarks"])
|
| 170 |
+
def get_benchmark_catalog(domain: Optional[str] = Query(None, description="Optional domain filter, e.g. 'healthcare_samd'")):
|
| 171 |
+
"""
|
| 172 |
+
Returns the complete multi-domain benchmark case studies catalog
|
| 173 |
+
with EUR-Lex CELEX:32024R1689 cryptographic provenance and W3C PROV-O anchors.
|
| 174 |
+
"""
|
| 175 |
+
if domain:
|
| 176 |
+
cases = catalog.get_cases_for_domain(domain)
|
| 177 |
+
dom_info = catalog.get_domain(domain)
|
| 178 |
+
return {
|
| 179 |
+
"domain": dom_info,
|
| 180 |
+
"total_cases": len(cases),
|
| 181 |
+
"case_studies": cases,
|
| 182 |
+
}
|
| 183 |
+
return catalog.raw_data
|
| 184 |
+
|
| 185 |
+
|
| 186 |
+
@app.get("/api/v1/benchmarks/cases/{case_id}", tags=["Benchmarks"])
|
| 187 |
+
def get_benchmark_case(case_id: str):
|
| 188 |
+
"""
|
| 189 |
+
Retrieves full benchmark case study details, statutory citations,
|
| 190 |
+
cryptographic provenance hashes, and technical specification text.
|
| 191 |
+
"""
|
| 192 |
+
case = catalog.get_case(case_id)
|
| 193 |
+
if not case:
|
| 194 |
+
raise HTTPException(status_code=404, detail=f"Benchmark case '{case_id}' not found.")
|
| 195 |
+
|
| 196 |
+
spec_text = catalog.get_case_document_text(case_id)
|
| 197 |
+
return {
|
| 198 |
+
"case_metadata": case,
|
| 199 |
+
"raw_specification_text": spec_text,
|
| 200 |
+
}
|
| 201 |
+
|
| 202 |
+
|
| 203 |
@app.get("/api/v1/audit/samples", tags=["Benchmarks"])
|
| 204 |
def list_benchmark_samples():
|
| 205 |
+
"""Returns all available benchmark case studies from the multi-domain catalog."""
|
| 206 |
+
samples = []
|
| 207 |
+
for domain in catalog.list_domains():
|
| 208 |
+
for case in domain.get("case_studies", []):
|
| 209 |
+
samples.append({
|
| 210 |
+
"id": case["case_id"],
|
| 211 |
+
"title": f"[{domain['domain_name']}] {case['title']}",
|
| 212 |
+
"domain": domain["domain_id"],
|
| 213 |
+
"statutory_tier": case["statutory_tier"],
|
| 214 |
+
"expected_conformity": case["expected_conformity"],
|
| 215 |
+
})
|
| 216 |
+
return samples
|
| 217 |
|
| 218 |
|
| 219 |
@app.get("/api/v1/audit/samples/{sample_id}", tags=["Benchmarks"])
|
|
|
|
| 221 |
"""Retrieves full specification content for a sample."""
|
| 222 |
file_path = SYNTHETIC_DIR / f"{sample_id}.json"
|
| 223 |
if not file_path.exists():
|
| 224 |
+
# Fallback to catalog lookup
|
| 225 |
+
case = catalog.get_case(sample_id)
|
| 226 |
+
if case and case.get("file_path"):
|
| 227 |
+
full_path = Path(case["file_path"])
|
| 228 |
+
if full_path.exists():
|
| 229 |
+
return json.loads(full_path.read_text(encoding="utf-8"))
|
| 230 |
raise HTTPException(status_code=404, detail="Sample not found.")
|
| 231 |
data = json.loads(file_path.read_text(encoding="utf-8"))
|
| 232 |
return data
|
app.py
CHANGED
|
@@ -18,25 +18,40 @@ from src.core.config import SYNTHETIC_DIR
|
|
| 18 |
from src.core.models import AssertionStatus, EntityCategory
|
| 19 |
from src.ui.graph_view import RegulatoryGraphView
|
| 20 |
|
| 21 |
-
|
|
|
|
|
|
|
| 22 |
engine = ReguAIEngine()
|
| 23 |
graph_viewer = RegulatoryGraphView()
|
|
|
|
| 24 |
|
| 25 |
-
# Pre-load
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
|
| 29 |
-
|
| 30 |
-
|
| 31 |
-
|
| 32 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 33 |
|
| 34 |
-
|
| 35 |
-
|
| 36 |
-
if
|
| 37 |
-
|
| 38 |
-
|
| 39 |
-
|
|
|
|
| 40 |
|
| 41 |
|
| 42 |
def run_assessment(doc_text: str, auditor_id: str, annual_turnover: float = 50000000.0, is_sme: bool = False):
|
|
@@ -484,6 +499,37 @@ button:not(.primary):not([variant="primary"]) {
|
|
| 484 |
border-color: #475569 !important;
|
| 485 |
color: #e2e8f0 !important;
|
| 486 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 487 |
"""
|
| 488 |
|
| 489 |
with gr.Blocks(title="ReguAI: Neuro-Symbolic AI GRC Engine") as demo:
|
|
@@ -507,16 +553,30 @@ with gr.Blocks(title="ReguAI: Neuro-Symbolic AI GRC Engine") as demo:
|
|
| 507 |
|
| 508 |
with gr.Row():
|
| 509 |
with gr.Column(scale=5):
|
| 510 |
-
|
| 511 |
-
|
| 512 |
-
|
| 513 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 514 |
)
|
| 515 |
spec_input = gr.Textbox(
|
| 516 |
label="📄 System Technical Specification / Model Card (Markdown or JSON)",
|
| 517 |
-
lines=
|
| 518 |
placeholder="Paste AI system architecture or model card text...",
|
| 519 |
-
value=
|
| 520 |
)
|
| 521 |
auditor_input = gr.Textbox(
|
| 522 |
label="Auditor Credential Identifier",
|
|
@@ -597,10 +657,15 @@ with gr.Blocks(title="ReguAI: Neuro-Symbolic AI GRC Engine") as demo:
|
|
| 597 |
jsonld_display = gr.Code(language="json", label="W3C JSON-LD Digital Certificate")
|
| 598 |
|
| 599 |
# Wire event handlers
|
| 600 |
-
|
| 601 |
-
fn=
|
| 602 |
-
inputs=[
|
| 603 |
-
outputs=[spec_input],
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 604 |
)
|
| 605 |
|
| 606 |
assess_btn.click(
|
|
|
|
| 18 |
from src.core.models import AssertionStatus, EntityCategory
|
| 19 |
from src.ui.graph_view import RegulatoryGraphView
|
| 20 |
|
| 21 |
+
from src.core.case_catalog import CaseStudyCatalog
|
| 22 |
+
|
| 23 |
+
# Initialize ReguAI Engine & Graph Visualizer & Case Study Catalog
|
| 24 |
engine = ReguAIEngine()
|
| 25 |
graph_viewer = RegulatoryGraphView()
|
| 26 |
+
catalog = CaseStudyCatalog()
|
| 27 |
|
| 28 |
+
# Pre-load domains and cases
|
| 29 |
+
DOMAIN_OPTIONS = [d["domain_name"] for d in catalog.list_domains()]
|
| 30 |
+
DEFAULT_DOMAIN = DOMAIN_OPTIONS[0]
|
| 31 |
+
DEFAULT_CASES = catalog.get_cases_for_domain(DEFAULT_DOMAIN)
|
| 32 |
+
DEFAULT_CASE_TITLES = [c["title"] for c in DEFAULT_CASES]
|
| 33 |
+
DEFAULT_CASE_TITLE = DEFAULT_CASE_TITLES[0]
|
| 34 |
+
DEFAULT_SPEC_TEXT = catalog.get_case_document_text(DEFAULT_CASE_TITLE)
|
| 35 |
+
DEFAULT_FACTSHEET = catalog.render_factsheet_html(DEFAULT_CASE_TITLE)
|
| 36 |
+
|
| 37 |
+
|
| 38 |
+
def on_domain_change(selected_domain_name: str):
|
| 39 |
+
cases = catalog.get_cases_for_domain(selected_domain_name)
|
| 40 |
+
if not cases:
|
| 41 |
+
return gr.update(choices=[], value=None), "", "<div style='padding:15px;'>No cases found.</div>"
|
| 42 |
+
titles = [c["title"] for c in cases]
|
| 43 |
+
first_title = titles[0]
|
| 44 |
+
text = catalog.get_case_document_text(first_title)
|
| 45 |
+
factsheet = catalog.render_factsheet_html(first_title)
|
| 46 |
+
return gr.update(choices=titles, value=first_title), text, factsheet
|
| 47 |
|
| 48 |
+
|
| 49 |
+
def on_case_change(selected_case_title: str):
|
| 50 |
+
if not selected_case_title:
|
| 51 |
+
return "", "<div style='padding:15px;'>Select a case study.</div>"
|
| 52 |
+
text = catalog.get_case_document_text(selected_case_title)
|
| 53 |
+
factsheet = catalog.render_factsheet_html(selected_case_title)
|
| 54 |
+
return text, factsheet
|
| 55 |
|
| 56 |
|
| 57 |
def run_assessment(doc_text: str, auditor_id: str, annual_turnover: float = 50000000.0, is_sme: bool = False):
|
|
|
|
| 499 |
border-color: #475569 !important;
|
| 500 |
color: #e2e8f0 !important;
|
| 501 |
}
|
| 502 |
+
|
| 503 |
+
/* -------------------------------------------------------------
|
| 504 |
+
FACTSHEET & PROVENANCE STYLING (Dark & Light Mode)
|
| 505 |
+
------------------------------------------------------------- */
|
| 506 |
+
.factsheet-container {
|
| 507 |
+
background: #ffffff !important;
|
| 508 |
+
border: 1px solid #cbd5e1 !important;
|
| 509 |
+
border-radius: 8px !important;
|
| 510 |
+
}
|
| 511 |
+
|
| 512 |
+
.dark .factsheet-container {
|
| 513 |
+
background: #1e293b !important;
|
| 514 |
+
border-color: #334155 !important;
|
| 515 |
+
color: #e2e8f0 !important;
|
| 516 |
+
}
|
| 517 |
+
|
| 518 |
+
.dark .factsheet-container h3 {
|
| 519 |
+
color: #f8fafc !important;
|
| 520 |
+
}
|
| 521 |
+
|
| 522 |
+
.dark .factsheet-container div[style*="background:#f8fafc"] {
|
| 523 |
+
background: #0f172a !important;
|
| 524 |
+
border-color: #334155 !important;
|
| 525 |
+
color: #cbd5e1 !important;
|
| 526 |
+
}
|
| 527 |
+
|
| 528 |
+
.dark .factsheet-container div[style*="background:#fffbeb"] {
|
| 529 |
+
background: #451a03 !important;
|
| 530 |
+
border-color: #78350f !important;
|
| 531 |
+
color: #fef3c7 !important;
|
| 532 |
+
}
|
| 533 |
"""
|
| 534 |
|
| 535 |
with gr.Blocks(title="ReguAI: Neuro-Symbolic AI GRC Engine") as demo:
|
|
|
|
| 553 |
|
| 554 |
with gr.Row():
|
| 555 |
with gr.Column(scale=5):
|
| 556 |
+
with gr.Row():
|
| 557 |
+
domain_dropdown = gr.Dropdown(
|
| 558 |
+
label="🌐 1. Select Regulatory Domain / Statutory Classification",
|
| 559 |
+
choices=DOMAIN_OPTIONS,
|
| 560 |
+
value=DEFAULT_DOMAIN,
|
| 561 |
+
scale=6,
|
| 562 |
+
interactive=True,
|
| 563 |
+
)
|
| 564 |
+
case_dropdown = gr.Dropdown(
|
| 565 |
+
label="📁 2. Select Benchmark Case Study & Legal Scenario",
|
| 566 |
+
choices=DEFAULT_CASE_TITLES,
|
| 567 |
+
value=DEFAULT_CASE_TITLE,
|
| 568 |
+
scale=6,
|
| 569 |
+
interactive=True,
|
| 570 |
+
)
|
| 571 |
+
factsheet_box = gr.HTML(
|
| 572 |
+
value=DEFAULT_FACTSHEET,
|
| 573 |
+
label="Statutory Reference Factsheet & Cryptographic Provenance",
|
| 574 |
)
|
| 575 |
spec_input = gr.Textbox(
|
| 576 |
label="📄 System Technical Specification / Model Card (Markdown or JSON)",
|
| 577 |
+
lines=12,
|
| 578 |
placeholder="Paste AI system architecture or model card text...",
|
| 579 |
+
value=DEFAULT_SPEC_TEXT,
|
| 580 |
)
|
| 581 |
auditor_input = gr.Textbox(
|
| 582 |
label="Auditor Credential Identifier",
|
|
|
|
| 657 |
jsonld_display = gr.Code(language="json", label="W3C JSON-LD Digital Certificate")
|
| 658 |
|
| 659 |
# Wire event handlers
|
| 660 |
+
domain_dropdown.change(
|
| 661 |
+
fn=on_domain_change,
|
| 662 |
+
inputs=[domain_dropdown],
|
| 663 |
+
outputs=[case_dropdown, spec_input, factsheet_box],
|
| 664 |
+
)
|
| 665 |
+
case_dropdown.change(
|
| 666 |
+
fn=on_case_change,
|
| 667 |
+
inputs=[case_dropdown],
|
| 668 |
+
outputs=[spec_input, factsheet_box],
|
| 669 |
)
|
| 670 |
|
| 671 |
assess_btn.click(
|
data/active_learning_triplets.jsonl
CHANGED
|
@@ -8,3 +8,9 @@
|
|
| 8 |
{"timestamp": "2026-09-20T19:37:14.849175+00:00", "auditor_id": "compliance_lead_01", "claim_id": "clm_test_99", "anchor_text": "Verified operational override in production dashboard.", "positive_label": "HUMAN_OVERSIGHT", "negative_label": "IRRELEVANT_TEXT", "verified_assertion_status": "IMPLEMENTED", "auditor_notes": "Verified operational override in production dashboard."}
|
| 9 |
{"timestamp": "2026-09-20T19:38:35.112557+00:00", "auditor_id": "compliance_lead_01", "claim_id": "clm_test_99", "anchor_text": "Verified operational override in production dashboard.", "positive_label": "HUMAN_OVERSIGHT", "negative_label": "IRRELEVANT_TEXT", "verified_assertion_status": "IMPLEMENTED", "auditor_notes": "Verified operational override in production dashboard."}
|
| 10 |
{"timestamp": "2026-09-20T19:47:07.934259+00:00", "auditor_id": "compliance_lead_01", "claim_id": "clm_test_99", "anchor_text": "Verified operational override in production dashboard.", "positive_label": "HUMAN_OVERSIGHT", "negative_label": "IRRELEVANT_TEXT", "verified_assertion_status": "IMPLEMENTED", "auditor_notes": "Verified operational override in production dashboard."}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 8 |
{"timestamp": "2026-09-20T19:37:14.849175+00:00", "auditor_id": "compliance_lead_01", "claim_id": "clm_test_99", "anchor_text": "Verified operational override in production dashboard.", "positive_label": "HUMAN_OVERSIGHT", "negative_label": "IRRELEVANT_TEXT", "verified_assertion_status": "IMPLEMENTED", "auditor_notes": "Verified operational override in production dashboard."}
|
| 9 |
{"timestamp": "2026-09-20T19:38:35.112557+00:00", "auditor_id": "compliance_lead_01", "claim_id": "clm_test_99", "anchor_text": "Verified operational override in production dashboard.", "positive_label": "HUMAN_OVERSIGHT", "negative_label": "IRRELEVANT_TEXT", "verified_assertion_status": "IMPLEMENTED", "auditor_notes": "Verified operational override in production dashboard."}
|
| 10 |
{"timestamp": "2026-09-20T19:47:07.934259+00:00", "auditor_id": "compliance_lead_01", "claim_id": "clm_test_99", "anchor_text": "Verified operational override in production dashboard.", "positive_label": "HUMAN_OVERSIGHT", "negative_label": "IRRELEVANT_TEXT", "verified_assertion_status": "IMPLEMENTED", "auditor_notes": "Verified operational override in production dashboard."}
|
| 11 |
+
{"timestamp": "2026-09-20T19:49:52.834161+00:00", "auditor_id": "compliance_lead_01", "claim_id": "clm_test_99", "anchor_text": "Verified operational override in production dashboard.", "positive_label": "HUMAN_OVERSIGHT", "negative_label": "IRRELEVANT_TEXT", "verified_assertion_status": "IMPLEMENTED", "auditor_notes": "Verified operational override in production dashboard."}
|
| 12 |
+
{"timestamp": "2026-09-20T19:59:08.362357+00:00", "auditor_id": "compliance_lead_01", "claim_id": "clm_test_99", "anchor_text": "Verified operational override in production dashboard.", "positive_label": "HUMAN_OVERSIGHT", "negative_label": "IRRELEVANT_TEXT", "verified_assertion_status": "IMPLEMENTED", "auditor_notes": "Verified operational override in production dashboard."}
|
| 13 |
+
{"timestamp": "2026-09-20T20:00:05.705224+00:00", "auditor_id": "compliance_lead_01", "claim_id": "clm_test_99", "anchor_text": "Verified operational override in production dashboard.", "positive_label": "HUMAN_OVERSIGHT", "negative_label": "IRRELEVANT_TEXT", "verified_assertion_status": "IMPLEMENTED", "auditor_notes": "Verified operational override in production dashboard."}
|
| 14 |
+
{"timestamp": "2026-09-20T20:00:20.408608+00:00", "auditor_id": "compliance_lead_01", "claim_id": "clm_test_99", "anchor_text": "Verified operational override in production dashboard.", "positive_label": "HUMAN_OVERSIGHT", "negative_label": "IRRELEVANT_TEXT", "verified_assertion_status": "IMPLEMENTED", "auditor_notes": "Verified operational override in production dashboard."}
|
| 15 |
+
{"timestamp": "2026-09-20T20:00:35.196971+00:00", "auditor_id": "compliance_lead_01", "claim_id": "clm_test_99", "anchor_text": "Verified operational override in production dashboard.", "positive_label": "HUMAN_OVERSIGHT", "negative_label": "IRRELEVANT_TEXT", "verified_assertion_status": "IMPLEMENTED", "auditor_notes": "Verified operational override in production dashboard."}
|
| 16 |
+
{"timestamp": "2026-09-20T20:01:32.495427+00:00", "auditor_id": "compliance_lead_01", "claim_id": "clm_test_99", "anchor_text": "Verified operational override in production dashboard.", "positive_label": "HUMAN_OVERSIGHT", "negative_label": "IRRELEVANT_TEXT", "verified_assertion_status": "IMPLEMENTED", "auditor_notes": "Verified operational override in production dashboard."}
|
data/benchmarks/case_studies_catalog.json
ADDED
|
@@ -0,0 +1,740 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"catalog_title": "ReguAI Exhaustive Multi-Domain Regulatory Case Study Catalog",
|
| 3 |
+
"catalog_version": "2.0.0",
|
| 4 |
+
"statutory_act": "Regulation (EU) 2024/1689 of the European Parliament and of the Council",
|
| 5 |
+
"official_journal": "OJ L, 2024/1689, 12.7.2024",
|
| 6 |
+
"eli_uri": "http://data.europa.eu/eli/reg/2024/1689/oj",
|
| 7 |
+
"celex": "32024R1689",
|
| 8 |
+
"domains": [
|
| 9 |
+
{
|
| 10 |
+
"domain_id": "healthcare_samd",
|
| 11 |
+
"domain_name": "🏥 Healthcare & Medical SaMD",
|
| 12 |
+
"statutory_category": "Annex I (MDR/IVDR) & Annex III Point 5(a)",
|
| 13 |
+
"legal_basis": "Regulation (EU) 2024/1689, Article 6(1) & Regulation (EU) 2017/745 (MDR)",
|
| 14 |
+
"domain_summary": "AI Software as a Medical Device (SaMD) used for diagnostic classification, patient risk stratification, and emergency medical triage.",
|
| 15 |
+
"case_studies": [
|
| 16 |
+
{
|
| 17 |
+
"case_id": "compliant_clinical_samd",
|
| 18 |
+
"title": "CardioScan / OncoScan AI Diagnostic Imaging (SaMD)",
|
| 19 |
+
"system_id": "samd-oncology-01",
|
| 20 |
+
"statutory_tier": "High-Risk (Annex I, Medical Device - Article 6(1))",
|
| 21 |
+
"legal_basis": "Regulation (EU) 2024/1689, Article 6(1) & MDR Class IIa",
|
| 22 |
+
"expected_conformity": "CONFORMANT (PASSED)",
|
| 23 |
+
"file_path": "data/synthetic_systems/compliant_clinical_samd.json",
|
| 24 |
+
"statutory_quote": "AI systems referred to in Annex I shall be considered high-risk if they are intended to be used as a safety component of a product, or are themselves a product, covered by Union harmonisation legislation listed in Annex I and are required to undergo a third-party conformity assessment.",
|
| 25 |
+
"regulatory_requirements": {
|
| 26 |
+
"mandatory_articles": [
|
| 27 |
+
"Article 9",
|
| 28 |
+
"Article 10",
|
| 29 |
+
"Article 10(2)(f)",
|
| 30 |
+
"Article 11",
|
| 31 |
+
"Article 12",
|
| 32 |
+
"Article 13",
|
| 33 |
+
"Article 14",
|
| 34 |
+
"Article 15"
|
| 35 |
+
],
|
| 36 |
+
"harmonized_frameworks": {
|
| 37 |
+
"nist_ai_rmf": [
|
| 38 |
+
"GOVERN-1.1",
|
| 39 |
+
"MAP-1.5",
|
| 40 |
+
"MEASURE-2.11",
|
| 41 |
+
"MANAGE-2.2"
|
| 42 |
+
],
|
| 43 |
+
"iso_42001": [
|
| 44 |
+
"Clause 6.1.2",
|
| 45 |
+
"Control A.6.2",
|
| 46 |
+
"Control A.8.4",
|
| 47 |
+
"Control A.9.2"
|
| 48 |
+
],
|
| 49 |
+
"gdpr": [
|
| 50 |
+
"Article 9(2)(h) Health Data",
|
| 51 |
+
"Article 22(3) Human Safeguards",
|
| 52 |
+
"Article 35 DPIA"
|
| 53 |
+
]
|
| 54 |
+
},
|
| 55 |
+
"conformity_procedure": "Annex VII: Notified Body Assessment combined with MDR Notified Body audit",
|
| 56 |
+
"fine_exposure_tier": "Tier 2 (€15,000,000 or 3% global turnover)"
|
| 57 |
+
},
|
| 58 |
+
"auditor_guidance": {
|
| 59 |
+
"intended_purpose": "Automated thoracic CT nodule segmentation and malignancy risk stratification.",
|
| 60 |
+
"common_pitfalls": "Relying purely on retrospective clinical datasets without validating demographic parity across diverse hospital imaging scanners; absence of radiologist manual override logs.",
|
| 61 |
+
"remediation_guidance": "Implement continuous ISO 14971 risk management, multi-center bias audits, and radiologist-in-the-loop confirmative oversight."
|
| 62 |
+
},
|
| 63 |
+
"file_sha256": "10307075b872d46a5d99f53dc7ed78cb6deccae74d707f5e4b55dc3483e68768",
|
| 64 |
+
"provenance": {
|
| 65 |
+
"statutory_act": "Regulation (EU) 2024/1689 of the European Parliament and of the Council",
|
| 66 |
+
"official_journal": "OJ L, 2024/1689, 12.7.2024",
|
| 67 |
+
"eli_uri": "http://data.europa.eu/eli/reg/2024/1689/oj",
|
| 68 |
+
"celex": "32024R1689",
|
| 69 |
+
"statutory_quote": "AI systems referred to in Annex I shall be considered high-risk if they are intended to be used as a safety component of a product, or are themselves a product, covered by Union harmonisation legislation listed in Annex I and are required to undergo a third-party conformity assessment.",
|
| 70 |
+
"statutory_quote_sha256": "5dcc4a383d81f69e7988c97f6e6e2d5b85bcd096ebd033df9cb198b12433d785",
|
| 71 |
+
"spec_file_sha256": "10307075b872d46a5d99f53dc7ed78cb6deccae74d707f5e4b55dc3483e68768",
|
| 72 |
+
"prov_o_entity": "urn:reguai:benchmark:case:compliant_clinical_samd",
|
| 73 |
+
"author": "ReguAI Regulatory Engineering Working Group",
|
| 74 |
+
"verification_method": "W3C PROV-O & SHA-256 Canonical Digest",
|
| 75 |
+
"timestamp": "2026-09-20T20:55:00Z"
|
| 76 |
+
}
|
| 77 |
+
}
|
| 78 |
+
]
|
| 79 |
+
},
|
| 80 |
+
{
|
| 81 |
+
"domain_id": "employment_hr",
|
| 82 |
+
"domain_name": "💼 Employment, HR & Workforce Management",
|
| 83 |
+
"statutory_category": "Annex III Point 4",
|
| 84 |
+
"legal_basis": "Regulation (EU) 2024/1689, Annex III, Point 4(a) & 4(b)",
|
| 85 |
+
"domain_summary": "AI systems used for recruitment, CV screening, job candidate evaluation, task allocation, and worker performance monitoring.",
|
| 86 |
+
"case_studies": [
|
| 87 |
+
{
|
| 88 |
+
"case_id": "non_compliant_hr_recruitment",
|
| 89 |
+
"title": "TalentRank AI - Automated CV Screening & Candidate Ranking",
|
| 90 |
+
"system_id": "hr-recruitment-02",
|
| 91 |
+
"statutory_tier": "High-Risk (Annex III, Point 4(a))",
|
| 92 |
+
"legal_basis": "Regulation (EU) 2024/1689, Annex III, Point 4(a)",
|
| 93 |
+
"expected_conformity": "NON-CONFORMANT (FAILED)",
|
| 94 |
+
"file_path": "data/synthetic_systems/non_compliant_hr_recruitment.json",
|
| 95 |
+
"statutory_quote": "AI systems intended to be used for recruitment or selection of natural persons, notably to place targeted job advertisements, to screen or filter applications, and to evaluate candidates.",
|
| 96 |
+
"regulatory_requirements": {
|
| 97 |
+
"mandatory_articles": [
|
| 98 |
+
"Article 9",
|
| 99 |
+
"Article 10(2)(f)",
|
| 100 |
+
"Article 13",
|
| 101 |
+
"Article 14",
|
| 102 |
+
"Article 15"
|
| 103 |
+
],
|
| 104 |
+
"harmonized_frameworks": {
|
| 105 |
+
"nist_ai_rmf": [
|
| 106 |
+
"GOVERN-1.1",
|
| 107 |
+
"MAP-1.5",
|
| 108 |
+
"MEASURE-2.11"
|
| 109 |
+
],
|
| 110 |
+
"iso_42001": [
|
| 111 |
+
"Control A.6.2",
|
| 112 |
+
"Control A.8.4"
|
| 113 |
+
],
|
| 114 |
+
"gdpr": [
|
| 115 |
+
"Article 9(2)(g)",
|
| 116 |
+
"Article 22(3) Automated Decisions"
|
| 117 |
+
]
|
| 118 |
+
},
|
| 119 |
+
"conformity_procedure": "Annex VI: Internal Control Assessment",
|
| 120 |
+
"fine_exposure_tier": "Tier 2 (€15,000,000 or 3% global turnover)"
|
| 121 |
+
},
|
| 122 |
+
"auditor_guidance": {
|
| 123 |
+
"intended_purpose": "Autonomous résumé ingestion, semantic ranking, and interview invitation generation.",
|
| 124 |
+
"common_pitfalls": "Historic gender and demographic bias encoded in legacy recruitment datasets; lack of explicit human intervention kill switch before candidates are rejected.",
|
| 125 |
+
"remediation_guidance": "Perform disparate impact parity analysis (Four-Fifths rule / Equal Opportunity Difference) and require mandatory HR officer approval for all candidate rejections."
|
| 126 |
+
},
|
| 127 |
+
"file_sha256": "c6ec9c67206cdbf275a7eb1eab0c9e85579d5bc428b503fc9a80040ce936524a",
|
| 128 |
+
"provenance": {
|
| 129 |
+
"statutory_act": "Regulation (EU) 2024/1689 of the European Parliament and of the Council",
|
| 130 |
+
"official_journal": "OJ L, 2024/1689, 12.7.2024",
|
| 131 |
+
"eli_uri": "http://data.europa.eu/eli/reg/2024/1689/oj",
|
| 132 |
+
"celex": "32024R1689",
|
| 133 |
+
"statutory_quote": "AI systems intended to be used for recruitment or selection of natural persons, notably to place targeted job advertisements, to screen or filter applications, and to evaluate candidates.",
|
| 134 |
+
"statutory_quote_sha256": "3c4764f14ff071e389175e3676bd3852b557469139a57fa652afe25cb5dde2ad",
|
| 135 |
+
"spec_file_sha256": "c6ec9c67206cdbf275a7eb1eab0c9e85579d5bc428b503fc9a80040ce936524a",
|
| 136 |
+
"prov_o_entity": "urn:reguai:benchmark:case:non_compliant_hr_recruitment",
|
| 137 |
+
"author": "ReguAI Regulatory Engineering Working Group",
|
| 138 |
+
"verification_method": "W3C PROV-O & SHA-256 Canonical Digest",
|
| 139 |
+
"timestamp": "2026-09-20T20:55:00Z"
|
| 140 |
+
}
|
| 141 |
+
}
|
| 142 |
+
]
|
| 143 |
+
},
|
| 144 |
+
{
|
| 145 |
+
"domain_id": "banking_finance",
|
| 146 |
+
"domain_name": "🏦 Financial Services, Credit & Insurance",
|
| 147 |
+
"statutory_category": "Annex III Point 5",
|
| 148 |
+
"legal_basis": "Regulation (EU) 2024/1689, Annex III, Point 5(b) & 5(c)",
|
| 149 |
+
"domain_summary": "AI systems used to evaluate creditworthiness of natural persons, establish credit scores, or price risk in life and health insurance.",
|
| 150 |
+
"case_studies": [
|
| 151 |
+
{
|
| 152 |
+
"case_id": "borderline_credit_scoring",
|
| 153 |
+
"title": "CreditScore-Next - Consumer Credit Risk Underwriting",
|
| 154 |
+
"system_id": "fin-credit-03",
|
| 155 |
+
"statutory_tier": "High-Risk (Annex III, Point 5(b))",
|
| 156 |
+
"legal_basis": "Regulation (EU) 2024/1689, Annex III, Point 5(b)",
|
| 157 |
+
"expected_conformity": "BORDERLINE (AUDITOR REVIEW)",
|
| 158 |
+
"file_path": "data/synthetic_systems/borderline_credit_scoring.json",
|
| 159 |
+
"statutory_quote": "AI systems intended to be used to evaluate the creditworthiness of natural persons or establish their credit score, with the exception of AI systems used for the purpose of detecting financial fraud.",
|
| 160 |
+
"regulatory_requirements": {
|
| 161 |
+
"mandatory_articles": [
|
| 162 |
+
"Article 9",
|
| 163 |
+
"Article 10",
|
| 164 |
+
"Article 10(2)(f)",
|
| 165 |
+
"Article 13",
|
| 166 |
+
"Article 14"
|
| 167 |
+
],
|
| 168 |
+
"harmonized_frameworks": {
|
| 169 |
+
"nist_ai_rmf": [
|
| 170 |
+
"MAP-1.5",
|
| 171 |
+
"MEASURE-2.11",
|
| 172 |
+
"MANAGE-2.2"
|
| 173 |
+
],
|
| 174 |
+
"iso_42001": [
|
| 175 |
+
"Control A.8.2",
|
| 176 |
+
"Control A.8.4"
|
| 177 |
+
],
|
| 178 |
+
"gdpr": [
|
| 179 |
+
"Article 13/14 Transparency",
|
| 180 |
+
"Article 22 Automated Decision-Making"
|
| 181 |
+
]
|
| 182 |
+
},
|
| 183 |
+
"conformity_procedure": "Annex VI: Internal Control Assessment",
|
| 184 |
+
"fine_exposure_tier": "Tier 2 (€15,000,000 or 3% global turnover)"
|
| 185 |
+
},
|
| 186 |
+
"auditor_guidance": {
|
| 187 |
+
"intended_purpose": "Consumer credit underwriting predicting loan default risk probabilities.",
|
| 188 |
+
"common_pitfalls": "Treating planned roadmap commitments (e.g. 'bias mitigation planned for Q3') as implemented controls; lack of adverse action explanatory notices under Article 13.",
|
| 189 |
+
"remediation_guidance": "Verify that all bias examination and human oversight controls are verified in production prior to loan disbursement."
|
| 190 |
+
},
|
| 191 |
+
"file_sha256": "c2f2a3f2b106b2e158e80193b79f6438ff96cd7c50a20dcd1a81096c3b671833",
|
| 192 |
+
"provenance": {
|
| 193 |
+
"statutory_act": "Regulation (EU) 2024/1689 of the European Parliament and of the Council",
|
| 194 |
+
"official_journal": "OJ L, 2024/1689, 12.7.2024",
|
| 195 |
+
"eli_uri": "http://data.europa.eu/eli/reg/2024/1689/oj",
|
| 196 |
+
"celex": "32024R1689",
|
| 197 |
+
"statutory_quote": "AI systems intended to be used to evaluate the creditworthiness of natural persons or establish their credit score, with the exception of AI systems used for the purpose of detecting financial fraud.",
|
| 198 |
+
"statutory_quote_sha256": "79978eed3683f16e8cc3ad64ec9483f34fdb772b7bf840c5221843490de934be",
|
| 199 |
+
"spec_file_sha256": "c2f2a3f2b106b2e158e80193b79f6438ff96cd7c50a20dcd1a81096c3b671833",
|
| 200 |
+
"prov_o_entity": "urn:reguai:benchmark:case:borderline_credit_scoring",
|
| 201 |
+
"author": "ReguAI Regulatory Engineering Working Group",
|
| 202 |
+
"verification_method": "W3C PROV-O & SHA-256 Canonical Digest",
|
| 203 |
+
"timestamp": "2026-09-20T20:55:00Z"
|
| 204 |
+
}
|
| 205 |
+
}
|
| 206 |
+
]
|
| 207 |
+
},
|
| 208 |
+
{
|
| 209 |
+
"domain_id": "transport_safety",
|
| 210 |
+
"domain_name": "🚗 Automotive & Road Transport Safety",
|
| 211 |
+
"statutory_category": "Annex I & Annex III Point 2",
|
| 212 |
+
"legal_basis": "Regulation (EU) 2024/1689, Article 6(1) & Regulation (EU) 2019/2144 (General Vehicle Safety)",
|
| 213 |
+
"domain_summary": "AI safety components in autonomous and semi-autonomous vehicles, collision avoidance, and automated emergency braking (AEB).",
|
| 214 |
+
"case_studies": [
|
| 215 |
+
{
|
| 216 |
+
"case_id": "transport_autonomous_braking",
|
| 217 |
+
"title": "AutoDrive SafeStop - Autonomous Emergency Braking Safety Component",
|
| 218 |
+
"system_id": "transport-brake-01",
|
| 219 |
+
"statutory_tier": "High-Risk (Annex I, Automotive Safety Component - Article 6(1))",
|
| 220 |
+
"legal_basis": "Regulation (EU) 2024/1689, Article 6(1) & Annex I, Section B",
|
| 221 |
+
"expected_conformity": "CONFORMANT (PASSED)",
|
| 222 |
+
"file_path": "data/synthetic_systems/transport_autonomous_braking.json",
|
| 223 |
+
"statutory_quote": "AI systems referred to in Annex I shall be considered high-risk if they are intended to be used as a safety component of a product covered by Union harmonisation legislation listed in Annex I.",
|
| 224 |
+
"regulatory_requirements": {
|
| 225 |
+
"mandatory_articles": [
|
| 226 |
+
"Article 9",
|
| 227 |
+
"Article 10",
|
| 228 |
+
"Article 11",
|
| 229 |
+
"Article 12",
|
| 230 |
+
"Article 14",
|
| 231 |
+
"Article 15"
|
| 232 |
+
],
|
| 233 |
+
"harmonized_frameworks": {
|
| 234 |
+
"nist_ai_rmf": [
|
| 235 |
+
"GOVERN-1.1",
|
| 236 |
+
"MANAGE-2.2"
|
| 237 |
+
],
|
| 238 |
+
"iso_42001": [
|
| 239 |
+
"Control A.6.2",
|
| 240 |
+
"Control A.9.3"
|
| 241 |
+
],
|
| 242 |
+
"gdpr": [
|
| 243 |
+
"Article 25 Data Protection by Design",
|
| 244 |
+
"Article 32 Security"
|
| 245 |
+
]
|
| 246 |
+
},
|
| 247 |
+
"conformity_procedure": "Vehicle Type Approval (UN ECE / Regulation (EU) 2019/2144)",
|
| 248 |
+
"fine_exposure_tier": "Tier 2 (€15,000,000 or 3% global turnover)"
|
| 249 |
+
},
|
| 250 |
+
"auditor_guidance": {
|
| 251 |
+
"intended_purpose": "Safety component for automated emergency braking in commercial transport trucks.",
|
| 252 |
+
"common_pitfalls": "Edge-case weather degradation (dense fog, blizzard); sensor blinding; lack of physical driver override precedence.",
|
| 253 |
+
"remediation_guidance": "Implement ISO 26262 ASIL-D hardware-in-the-loop validation and driver steering/braking mechanical override."
|
| 254 |
+
},
|
| 255 |
+
"file_sha256": "05711b454abc603d0578da44e1b3fcd9c38b89b070753c4ef9f3dda28f577d1c",
|
| 256 |
+
"provenance": {
|
| 257 |
+
"statutory_act": "Regulation (EU) 2024/1689 of the European Parliament and of the Council",
|
| 258 |
+
"official_journal": "OJ L, 2024/1689, 12.7.2024",
|
| 259 |
+
"eli_uri": "http://data.europa.eu/eli/reg/2024/1689/oj",
|
| 260 |
+
"celex": "32024R1689",
|
| 261 |
+
"statutory_quote": "AI systems referred to in Annex I shall be considered high-risk if they are intended to be used as a safety component of a product covered by Union harmonisation legislation listed in Annex I.",
|
| 262 |
+
"statutory_quote_sha256": "76d72016601abdcf78c934d9ba402cb4321905234ff2f1d433e9d70389e7fd94",
|
| 263 |
+
"spec_file_sha256": "05711b454abc603d0578da44e1b3fcd9c38b89b070753c4ef9f3dda28f577d1c",
|
| 264 |
+
"prov_o_entity": "urn:reguai:benchmark:case:transport_autonomous_braking",
|
| 265 |
+
"author": "ReguAI Regulatory Engineering Working Group",
|
| 266 |
+
"verification_method": "W3C PROV-O & SHA-256 Canonical Digest",
|
| 267 |
+
"timestamp": "2026-09-20T20:55:00Z"
|
| 268 |
+
}
|
| 269 |
+
}
|
| 270 |
+
]
|
| 271 |
+
},
|
| 272 |
+
{
|
| 273 |
+
"domain_id": "critical_infrastructure",
|
| 274 |
+
"domain_name": "⚡ Critical Infrastructure & Energy",
|
| 275 |
+
"statutory_category": "Annex III Point 2(a)",
|
| 276 |
+
"legal_basis": "Regulation (EU) 2024/1689, Annex III, Point 2(a)",
|
| 277 |
+
"domain_summary": "AI systems used as safety components in the management and operation of critical digital infrastructure, electricity, water, or gas grids.",
|
| 278 |
+
"case_studies": [
|
| 279 |
+
{
|
| 280 |
+
"case_id": "critical_infra_smart_grid",
|
| 281 |
+
"title": "VoltBalance - Smart Grid Dispatch & Load Shedding Optimizer",
|
| 282 |
+
"system_id": "infra-grid-02",
|
| 283 |
+
"statutory_tier": "High-Risk (Annex III, Point 2(a) - Critical Infrastructure)",
|
| 284 |
+
"legal_basis": "Regulation (EU) 2024/1689, Annex III, Point 2(a)",
|
| 285 |
+
"expected_conformity": "CONFORMANT (PASSED)",
|
| 286 |
+
"file_path": "data/synthetic_systems/critical_infra_smart_grid.json",
|
| 287 |
+
"statutory_quote": "AI systems intended to be used as safety components in the management and operation of critical digital infrastructure, road traffic, or the supply of water, gas, heating or electricity.",
|
| 288 |
+
"regulatory_requirements": {
|
| 289 |
+
"mandatory_articles": [
|
| 290 |
+
"Article 9",
|
| 291 |
+
"Article 10",
|
| 292 |
+
"Article 12",
|
| 293 |
+
"Article 14",
|
| 294 |
+
"Article 15"
|
| 295 |
+
],
|
| 296 |
+
"harmonized_frameworks": {
|
| 297 |
+
"nist_ai_rmf": [
|
| 298 |
+
"GOVERN-1.1",
|
| 299 |
+
"MANAGE-2.2"
|
| 300 |
+
],
|
| 301 |
+
"iso_42001": [
|
| 302 |
+
"Control A.8.4",
|
| 303 |
+
"Control A.9.2"
|
| 304 |
+
],
|
| 305 |
+
"gdpr": [
|
| 306 |
+
"Article 32 Security of Processing"
|
| 307 |
+
]
|
| 308 |
+
},
|
| 309 |
+
"conformity_procedure": "Annex VI: Internal Control Assessment + NIS 2 Directive compliance",
|
| 310 |
+
"fine_exposure_tier": "Tier 2 (€15,000,000 or 3% global turnover)"
|
| 311 |
+
},
|
| 312 |
+
"auditor_guidance": {
|
| 313 |
+
"intended_purpose": "Predicting transmission grid frequency instability and automating substation load shedding.",
|
| 314 |
+
"common_pitfalls": "Adversarial sensor manipulation in SCADA protocols; unmitigated cascading blackout failure modes.",
|
| 315 |
+
"remediation_guidance": "Enforce IEC 62351 cybersecurity controls, air-gapped network segmentation, and human operator dispatch confirmation thresholds."
|
| 316 |
+
},
|
| 317 |
+
"file_sha256": "e1f880b6b7c75160ec093460a5aee7cbe7c3799f012edf9766c8b7742618ca2a",
|
| 318 |
+
"provenance": {
|
| 319 |
+
"statutory_act": "Regulation (EU) 2024/1689 of the European Parliament and of the Council",
|
| 320 |
+
"official_journal": "OJ L, 2024/1689, 12.7.2024",
|
| 321 |
+
"eli_uri": "http://data.europa.eu/eli/reg/2024/1689/oj",
|
| 322 |
+
"celex": "32024R1689",
|
| 323 |
+
"statutory_quote": "AI systems intended to be used as safety components in the management and operation of critical digital infrastructure, road traffic, or the supply of water, gas, heating or electricity.",
|
| 324 |
+
"statutory_quote_sha256": "e0c3c5f1b40de5454437f0eb284e65cea7490366fc37beb29c6f76609bffe60d",
|
| 325 |
+
"spec_file_sha256": "e1f880b6b7c75160ec093460a5aee7cbe7c3799f012edf9766c8b7742618ca2a",
|
| 326 |
+
"prov_o_entity": "urn:reguai:benchmark:case:critical_infra_smart_grid",
|
| 327 |
+
"author": "ReguAI Regulatory Engineering Working Group",
|
| 328 |
+
"verification_method": "W3C PROV-O & SHA-256 Canonical Digest",
|
| 329 |
+
"timestamp": "2026-09-20T20:55:00Z"
|
| 330 |
+
}
|
| 331 |
+
}
|
| 332 |
+
]
|
| 333 |
+
},
|
| 334 |
+
{
|
| 335 |
+
"domain_id": "education_training",
|
| 336 |
+
"domain_name": "🎓 Education & Vocational Training",
|
| 337 |
+
"statutory_category": "Annex III Point 3",
|
| 338 |
+
"legal_basis": "Regulation (EU) 2024/1689, Annex III, Point 3(a) & 3(b)",
|
| 339 |
+
"domain_summary": "AI systems used for student admission, assignment, grading, and monitoring or detecting prohibited behaviour of students during tests.",
|
| 340 |
+
"case_studies": [
|
| 341 |
+
{
|
| 342 |
+
"case_id": "education_remote_proctoring",
|
| 343 |
+
"title": "ExamGuard AI - Remote Exam Video Surveillance & Cheating Detection",
|
| 344 |
+
"system_id": "edu-proctor-03",
|
| 345 |
+
"statutory_tier": "High-Risk (Annex III, Point 3(b) - Education & Vocational Training)",
|
| 346 |
+
"legal_basis": "Regulation (EU) 2024/1689, Annex III, Point 3(b)",
|
| 347 |
+
"expected_conformity": "NON-CONFORMANT (FAILED)",
|
| 348 |
+
"file_path": "data/synthetic_systems/education_remote_proctoring.json",
|
| 349 |
+
"statutory_quote": "AI systems intended to be used for monitoring and detecting prohibited behaviour of students during tests in the context of or within educational and vocational training institutions.",
|
| 350 |
+
"regulatory_requirements": {
|
| 351 |
+
"mandatory_articles": [
|
| 352 |
+
"Article 9",
|
| 353 |
+
"Article 10(2)(f)",
|
| 354 |
+
"Article 13",
|
| 355 |
+
"Article 14",
|
| 356 |
+
"Article 15"
|
| 357 |
+
],
|
| 358 |
+
"harmonized_frameworks": {
|
| 359 |
+
"nist_ai_rmf": [
|
| 360 |
+
"MAP-1.5",
|
| 361 |
+
"MEASURE-2.11"
|
| 362 |
+
],
|
| 363 |
+
"iso_42001": [
|
| 364 |
+
"Control A.6.2",
|
| 365 |
+
"Control A.8.4"
|
| 366 |
+
],
|
| 367 |
+
"gdpr": [
|
| 368 |
+
"Article 9 Special Category Biometric Data",
|
| 369 |
+
"Article 22(3)"
|
| 370 |
+
]
|
| 371 |
+
},
|
| 372 |
+
"conformity_procedure": "Annex VI: Internal Control Assessment",
|
| 373 |
+
"fine_exposure_tier": "Tier 2 (€15,000,000 or 3% global turnover)"
|
| 374 |
+
},
|
| 375 |
+
"auditor_guidance": {
|
| 376 |
+
"intended_purpose": "Automated webcam gaze tracking and cheating detection during remote university exams.",
|
| 377 |
+
"common_pitfalls": "High false-positive rate against neurodivergent students; automated exam disqualification without human proctor confirmation.",
|
| 378 |
+
"remediation_guidance": "Mandate board-certified proctor review for any academic integrity violation; disable autonomous disqualifications."
|
| 379 |
+
},
|
| 380 |
+
"file_sha256": "6df408982de7afa0a061d22b05d146dc58b0944fba3d2522d8f91ce9559a2ac7",
|
| 381 |
+
"provenance": {
|
| 382 |
+
"statutory_act": "Regulation (EU) 2024/1689 of the European Parliament and of the Council",
|
| 383 |
+
"official_journal": "OJ L, 2024/1689, 12.7.2024",
|
| 384 |
+
"eli_uri": "http://data.europa.eu/eli/reg/2024/1689/oj",
|
| 385 |
+
"celex": "32024R1689",
|
| 386 |
+
"statutory_quote": "AI systems intended to be used for monitoring and detecting prohibited behaviour of students during tests in the context of or within educational and vocational training institutions.",
|
| 387 |
+
"statutory_quote_sha256": "4a08282d283284eb1b8d54a12b1067ac5b5e6e7325757e059c52d7ecd3d3030e",
|
| 388 |
+
"spec_file_sha256": "6df408982de7afa0a061d22b05d146dc58b0944fba3d2522d8f91ce9559a2ac7",
|
| 389 |
+
"prov_o_entity": "urn:reguai:benchmark:case:education_remote_proctoring",
|
| 390 |
+
"author": "ReguAI Regulatory Engineering Working Group",
|
| 391 |
+
"verification_method": "W3C PROV-O & SHA-256 Canonical Digest",
|
| 392 |
+
"timestamp": "2026-09-20T20:55:00Z"
|
| 393 |
+
}
|
| 394 |
+
}
|
| 395 |
+
]
|
| 396 |
+
},
|
| 397 |
+
{
|
| 398 |
+
"domain_id": "justice_law_enforcement",
|
| 399 |
+
"domain_name": "⚖️ Law Enforcement & Criminal Justice",
|
| 400 |
+
"statutory_category": "Annex III Points 6 & 8",
|
| 401 |
+
"legal_basis": "Regulation (EU) 2024/1689, Annex III, Point 6(a) & Point 8",
|
| 402 |
+
"domain_summary": "AI systems used for individual criminal risk assessments, recidivism forecasting, evidence evaluation, and assisting judicial authorities.",
|
| 403 |
+
"case_studies": [
|
| 404 |
+
{
|
| 405 |
+
"case_id": "justice_recidivism_risk",
|
| 406 |
+
"title": "JustiRisk - Criminal Recidivism & Bail Risk Scoring",
|
| 407 |
+
"system_id": "justice-recid-04",
|
| 408 |
+
"statutory_tier": "High-Risk (Annex III, Point 6(a) - Law Enforcement & Justice)",
|
| 409 |
+
"legal_basis": "Regulation (EU) 2024/1689, Annex III, Point 6(a)",
|
| 410 |
+
"expected_conformity": "NON-CONFORMANT (FAILED)",
|
| 411 |
+
"file_path": "data/synthetic_systems/justice_recidivism_risk.json",
|
| 412 |
+
"statutory_quote": "AI systems intended to be used by law enforcement authorities or on their behalf for making individual risk assessments of natural persons in order to assess the risk of a natural person offending or re-offending.",
|
| 413 |
+
"regulatory_requirements": {
|
| 414 |
+
"mandatory_articles": [
|
| 415 |
+
"Article 9",
|
| 416 |
+
"Article 10(2)(f)",
|
| 417 |
+
"Article 13",
|
| 418 |
+
"Article 14",
|
| 419 |
+
"Article 15"
|
| 420 |
+
],
|
| 421 |
+
"harmonized_frameworks": {
|
| 422 |
+
"nist_ai_rmf": [
|
| 423 |
+
"GOVERN-1.1",
|
| 424 |
+
"MEASURE-2.11"
|
| 425 |
+
],
|
| 426 |
+
"iso_42001": [
|
| 427 |
+
"Control A.6.2",
|
| 428 |
+
"Control A.8.4"
|
| 429 |
+
],
|
| 430 |
+
"gdpr": [
|
| 431 |
+
"Article 10 Criminal Conviction Data",
|
| 432 |
+
"Article 22"
|
| 433 |
+
]
|
| 434 |
+
},
|
| 435 |
+
"conformity_procedure": "Annex VI: Internal Control Assessment + Fundamental Rights Impact Assessment (FRIA, Art. 27)",
|
| 436 |
+
"fine_exposure_tier": "Tier 2 (€15,000,000 or 3% global turnover)"
|
| 437 |
+
},
|
| 438 |
+
"auditor_guidance": {
|
| 439 |
+
"intended_purpose": "Predicting defendant failure-to-appear and re-arrest probability for arraignment judges.",
|
| 440 |
+
"common_pitfalls": "Feedback loops amplifying historic policing disparities; lack of feature-level explainability to judges.",
|
| 441 |
+
"remediation_guidance": "Conduct independent algorithmic equity audits and furnish defense counsel with full mathematical factor weights."
|
| 442 |
+
},
|
| 443 |
+
"file_sha256": "d97c94dac615aa333ee6d91f180dbbe7e7091b790be4dd41e63709e90175a42f",
|
| 444 |
+
"provenance": {
|
| 445 |
+
"statutory_act": "Regulation (EU) 2024/1689 of the European Parliament and of the Council",
|
| 446 |
+
"official_journal": "OJ L, 2024/1689, 12.7.2024",
|
| 447 |
+
"eli_uri": "http://data.europa.eu/eli/reg/2024/1689/oj",
|
| 448 |
+
"celex": "32024R1689",
|
| 449 |
+
"statutory_quote": "AI systems intended to be used by law enforcement authorities or on their behalf for making individual risk assessments of natural persons in order to assess the risk of a natural person offending or re-offending.",
|
| 450 |
+
"statutory_quote_sha256": "3576a8d0a0ef17595478e6f5970b98bbfaa4f5735a905beb61da41ab20b130e7",
|
| 451 |
+
"spec_file_sha256": "d97c94dac615aa333ee6d91f180dbbe7e7091b790be4dd41e63709e90175a42f",
|
| 452 |
+
"prov_o_entity": "urn:reguai:benchmark:case:justice_recidivism_risk",
|
| 453 |
+
"author": "ReguAI Regulatory Engineering Working Group",
|
| 454 |
+
"verification_method": "W3C PROV-O & SHA-256 Canonical Digest",
|
| 455 |
+
"timestamp": "2026-09-20T20:55:00Z"
|
| 456 |
+
}
|
| 457 |
+
}
|
| 458 |
+
]
|
| 459 |
+
},
|
| 460 |
+
{
|
| 461 |
+
"domain_id": "frontier_gpai",
|
| 462 |
+
"domain_name": "🌐 Frontier GPAI & Foundation Models",
|
| 463 |
+
"statutory_category": "Chapter V (Articles 51–55)",
|
| 464 |
+
"legal_basis": "Regulation (EU) 2024/1689, Chapter V, Articles 51, 52, 53, 55",
|
| 465 |
+
"domain_summary": "General-purpose AI models, frontier LLMs trained on > 10^25 FLOPs, systemic risk mitigations, and copyright opt-out enforcement.",
|
| 466 |
+
"case_studies": [
|
| 467 |
+
{
|
| 468 |
+
"case_id": "gpai_foundation_llm",
|
| 469 |
+
"title": "Nexus-70B Frontier Foundation LLM (>10^25 FLOPs)",
|
| 470 |
+
"system_id": "gpai-frontier-70b",
|
| 471 |
+
"statutory_tier": "GPAI with Systemic Risk (Article 51)",
|
| 472 |
+
"legal_basis": "Regulation (EU) 2024/1689, Chapter V, Article 51 & Article 55",
|
| 473 |
+
"expected_conformity": "CONFORMANT (PASSED)",
|
| 474 |
+
"file_path": "data/synthetic_systems/gpai_foundation_llm.json",
|
| 475 |
+
"statutory_quote": "A general-purpose AI model shall be presumed to have high impact capabilities when the cumulative amount of computation used for its training measured in floating point operations is greater than 10^25.",
|
| 476 |
+
"regulatory_requirements": {
|
| 477 |
+
"mandatory_articles": [
|
| 478 |
+
"Article 51",
|
| 479 |
+
"Article 53",
|
| 480 |
+
"Article 55"
|
| 481 |
+
],
|
| 482 |
+
"harmonized_frameworks": {
|
| 483 |
+
"nist_ai_rmf": [
|
| 484 |
+
"GOVERN-1.1",
|
| 485 |
+
"MEASURE-2.6",
|
| 486 |
+
"MANAGE-2.2"
|
| 487 |
+
],
|
| 488 |
+
"iso_42001": [
|
| 489 |
+
"Control A.8.2",
|
| 490 |
+
"Control A.9.3"
|
| 491 |
+
],
|
| 492 |
+
"gdpr": [
|
| 493 |
+
"Directive (EU) 2019/790 DSM Copyright Opt-Out",
|
| 494 |
+
"Article 25"
|
| 495 |
+
]
|
| 496 |
+
},
|
| 497 |
+
"conformity_procedure": "AI Office Code of Practice / Independent Red-Teaming Attestation",
|
| 498 |
+
"fine_exposure_tier": "Tier 2 (€15,000,000 or 3% global turnover)"
|
| 499 |
+
},
|
| 500 |
+
"auditor_guidance": {
|
| 501 |
+
"intended_purpose": "Multi-modal frontier foundation LLM deployed for downstream enterprise reasoning and code generation.",
|
| 502 |
+
"common_pitfalls": "Omission of training energy consumption reporting (MWh / tCO2eq); unverified compliance with EU copyright opt-out crawler policies (Directive (EU) 2019/790).",
|
| 503 |
+
"remediation_guidance": "Document FLOPs declarations, publish training energy metrics, and institute external adversarial red-teaming."
|
| 504 |
+
},
|
| 505 |
+
"file_sha256": "32ab439dd9aa11d48fd8229f36dc6881b33f0fe4a9f6b07ad80a2c0d3b2cb83c",
|
| 506 |
+
"provenance": {
|
| 507 |
+
"statutory_act": "Regulation (EU) 2024/1689 of the European Parliament and of the Council",
|
| 508 |
+
"official_journal": "OJ L, 2024/1689, 12.7.2024",
|
| 509 |
+
"eli_uri": "http://data.europa.eu/eli/reg/2024/1689/oj",
|
| 510 |
+
"celex": "32024R1689",
|
| 511 |
+
"statutory_quote": "A general-purpose AI model shall be presumed to have high impact capabilities when the cumulative amount of computation used for its training measured in floating point operations is greater than 10^25.",
|
| 512 |
+
"statutory_quote_sha256": "23266169a3d1d1e7d12699b60912f09b0f20e20b5a8f4f521193b8db2ad9dab8",
|
| 513 |
+
"spec_file_sha256": "32ab439dd9aa11d48fd8229f36dc6881b33f0fe4a9f6b07ad80a2c0d3b2cb83c",
|
| 514 |
+
"prov_o_entity": "urn:reguai:benchmark:case:gpai_foundation_llm",
|
| 515 |
+
"author": "ReguAI Regulatory Engineering Working Group",
|
| 516 |
+
"verification_method": "W3C PROV-O & SHA-256 Canonical Digest",
|
| 517 |
+
"timestamp": "2026-09-20T20:55:00Z"
|
| 518 |
+
}
|
| 519 |
+
}
|
| 520 |
+
]
|
| 521 |
+
},
|
| 522 |
+
{
|
| 523 |
+
"domain_id": "prohibited_practices",
|
| 524 |
+
"domain_name": "🚫 Prohibited AI Practices (Article 5 - Zero Tolerance)",
|
| 525 |
+
"statutory_category": "Chapter II, Article 5",
|
| 526 |
+
"legal_basis": "Regulation (EU) 2024/1689, Article 5(1)(a)-(h)",
|
| 527 |
+
"domain_summary": "Strictly illegal AI systems causing unacceptable risk to fundamental human rights, subject to fatal ban and €35M statutory fines.",
|
| 528 |
+
"case_studies": [
|
| 529 |
+
{
|
| 530 |
+
"case_id": "prohibited_emotion_recognition_workplace",
|
| 531 |
+
"title": "MindGaze AI - Classroom & Workplace Emotion Recognition",
|
| 532 |
+
"system_id": "prohibit-emotion-01",
|
| 533 |
+
"statutory_tier": "Prohibited (Article 5(1)(f))",
|
| 534 |
+
"legal_basis": "Regulation (EU) 2024/1689, Article 5(1)(f)",
|
| 535 |
+
"expected_conformity": "PROHIBITED (FATAL VIOLATION)",
|
| 536 |
+
"file_path": "data/synthetic_systems/prohibited_emotion_recognition_workplace.json",
|
| 537 |
+
"statutory_quote": "the placing on the market, the putting into service or the use of AI systems to infer emotions of a natural person in the areas of workplace and education institutions, except where the use of the AI system is intended to be put in place or into the market for medical or safety reasons.",
|
| 538 |
+
"regulatory_requirements": {
|
| 539 |
+
"mandatory_articles": [
|
| 540 |
+
"Article 5(1)(f)"
|
| 541 |
+
],
|
| 542 |
+
"harmonized_frameworks": {
|
| 543 |
+
"nist_ai_rmf": [
|
| 544 |
+
"GOVERN-1.1 (Prohibited Use Policy)"
|
| 545 |
+
],
|
| 546 |
+
"iso_42001": [
|
| 547 |
+
"Control A.6.1 Statutory Compliance"
|
| 548 |
+
],
|
| 549 |
+
"gdpr": [
|
| 550 |
+
"Article 9 Special Category Biometric Data Violation"
|
| 551 |
+
]
|
| 552 |
+
},
|
| 553 |
+
"conformity_procedure": "IMMEDIATE CEASE / PROHIBITED FROM UNION MARKET",
|
| 554 |
+
"fine_exposure_tier": "Tier 1 (€35,000,000 or 7% global turnover)"
|
| 555 |
+
},
|
| 556 |
+
"auditor_guidance": {
|
| 557 |
+
"intended_purpose": "Continuous automated facial micro-expression analysis to infer employee attentiveness and classroom student engagement.",
|
| 558 |
+
"common_pitfalls": "Attempting to justify workplace emotion tracking under the guise of productivity analytics or employee wellness monitoring.",
|
| 559 |
+
"remediation_guidance": "System must be completely decommissioned and withdrawn from EU deployment; no conformity procedure exists."
|
| 560 |
+
},
|
| 561 |
+
"file_sha256": "f580f8d3d2fe68e0fd35ac78909a8e5b3348327cc00566176be48707e4c18b66",
|
| 562 |
+
"provenance": {
|
| 563 |
+
"statutory_act": "Regulation (EU) 2024/1689 of the European Parliament and of the Council",
|
| 564 |
+
"official_journal": "OJ L, 2024/1689, 12.7.2024",
|
| 565 |
+
"eli_uri": "http://data.europa.eu/eli/reg/2024/1689/oj",
|
| 566 |
+
"celex": "32024R1689",
|
| 567 |
+
"statutory_quote": "the placing on the market, the putting into service or the use of AI systems to infer emotions of a natural person in the areas of workplace and education institutions, except where the use of the AI system is intended to be put in place or into the market for medical or safety reasons.",
|
| 568 |
+
"statutory_quote_sha256": "a6acc3b61a54da5bfc645db359dea2d5a8da5b814c93a25f7009bcb64ef1cd7f",
|
| 569 |
+
"spec_file_sha256": "f580f8d3d2fe68e0fd35ac78909a8e5b3348327cc00566176be48707e4c18b66",
|
| 570 |
+
"prov_o_entity": "urn:reguai:benchmark:case:prohibited_emotion_recognition_workplace",
|
| 571 |
+
"author": "ReguAI Regulatory Engineering Working Group",
|
| 572 |
+
"verification_method": "W3C PROV-O & SHA-256 Canonical Digest",
|
| 573 |
+
"timestamp": "2026-09-20T20:55:00Z"
|
| 574 |
+
}
|
| 575 |
+
},
|
| 576 |
+
{
|
| 577 |
+
"case_id": "prohibited_social_scoring",
|
| 578 |
+
"title": "CitizenTrust - Universal Civic Score & Trustworthiness Engine",
|
| 579 |
+
"system_id": "prohibit-social-05",
|
| 580 |
+
"statutory_tier": "Prohibited (Article 5(1)(c))",
|
| 581 |
+
"legal_basis": "Regulation (EU) 2024/1689, Article 5(1)(c)",
|
| 582 |
+
"expected_conformity": "PROHIBITED (FATAL VIOLATION)",
|
| 583 |
+
"file_path": "data/synthetic_systems/prohibited_social_scoring.json",
|
| 584 |
+
"statutory_quote": "the placing on the market, the putting into service or the use of AI systems for the evaluation or classification of the trustworthiness of natural persons over a given period based on their social behaviour or known, inferred or predicted personal or personality characteristics.",
|
| 585 |
+
"regulatory_requirements": {
|
| 586 |
+
"mandatory_articles": [
|
| 587 |
+
"Article 5(1)(c)"
|
| 588 |
+
],
|
| 589 |
+
"harmonized_frameworks": {
|
| 590 |
+
"nist_ai_rmf": [
|
| 591 |
+
"GOVERN-1.1"
|
| 592 |
+
],
|
| 593 |
+
"iso_42001": [
|
| 594 |
+
"Control A.6.1"
|
| 595 |
+
],
|
| 596 |
+
"gdpr": [
|
| 597 |
+
"Article 22 Automated Profiling Ban"
|
| 598 |
+
]
|
| 599 |
+
},
|
| 600 |
+
"conformity_procedure": "IMMEDIATE CEASE / PROHIBITED FROM UNION MARKET",
|
| 601 |
+
"fine_exposure_tier": "Tier 1 (€35,000,000 or 7% global turnover)"
|
| 602 |
+
},
|
| 603 |
+
"auditor_guidance": {
|
| 604 |
+
"intended_purpose": "Evaluating citizen trustworthiness based on social behavior and administrative compliance to allocate public benefits.",
|
| 605 |
+
"common_pitfalls": "Aggregating unrelated behavioral metrics across public transport, social conduct, and utility payments.",
|
| 606 |
+
"remediation_guidance": "Immediate cessation of all profiling; full destruction of civic scoring datasets under supervision of National Supervisory Authority."
|
| 607 |
+
},
|
| 608 |
+
"file_sha256": "d0aba4bb9064315583601c51bc083575355564d58d4aab3377a4e82f26ab216f",
|
| 609 |
+
"provenance": {
|
| 610 |
+
"statutory_act": "Regulation (EU) 2024/1689 of the European Parliament and of the Council",
|
| 611 |
+
"official_journal": "OJ L, 2024/1689, 12.7.2024",
|
| 612 |
+
"eli_uri": "http://data.europa.eu/eli/reg/2024/1689/oj",
|
| 613 |
+
"celex": "32024R1689",
|
| 614 |
+
"statutory_quote": "the placing on the market, the putting into service or the use of AI systems for the evaluation or classification of the trustworthiness of natural persons over a given period based on their social behaviour or known, inferred or predicted personal or personality characteristics.",
|
| 615 |
+
"statutory_quote_sha256": "9e06a4684d2ff50679f1c4c87620cd1ea4ec01c7eac1ef0cf952ce3f1622b85e",
|
| 616 |
+
"spec_file_sha256": "d0aba4bb9064315583601c51bc083575355564d58d4aab3377a4e82f26ab216f",
|
| 617 |
+
"prov_o_entity": "urn:reguai:benchmark:case:prohibited_social_scoring",
|
| 618 |
+
"author": "ReguAI Regulatory Engineering Working Group",
|
| 619 |
+
"verification_method": "W3C PROV-O & SHA-256 Canonical Digest",
|
| 620 |
+
"timestamp": "2026-09-20T20:55:00Z"
|
| 621 |
+
}
|
| 622 |
+
}
|
| 623 |
+
]
|
| 624 |
+
},
|
| 625 |
+
{
|
| 626 |
+
"domain_id": "limited_risk_generative",
|
| 627 |
+
"domain_name": "💬 Limited Risk & Generative Transparency",
|
| 628 |
+
"statutory_category": "Chapter IV, Article 50",
|
| 629 |
+
"legal_basis": "Regulation (EU) 2024/1689, Article 50(1) & 50(2)",
|
| 630 |
+
"domain_summary": "AI systems directly interacting with natural persons (chatbots) and generative synthetic audio/video systems requiring transparency disclosures.",
|
| 631 |
+
"case_studies": [
|
| 632 |
+
{
|
| 633 |
+
"case_id": "limited_risk_customer_bot",
|
| 634 |
+
"title": "OmniAssist Enterprise Conversational Support Agent",
|
| 635 |
+
"system_id": "limited-bot-06",
|
| 636 |
+
"statutory_tier": "Limited Risk (Article 50 - Transparency Obligations)",
|
| 637 |
+
"legal_basis": "Regulation (EU) 2024/1689, Article 50(1)",
|
| 638 |
+
"expected_conformity": "CONFORMANT (PASSED)",
|
| 639 |
+
"file_path": "data/synthetic_systems/limited_risk_customer_bot.json",
|
| 640 |
+
"statutory_quote": "Providers shall ensure that AI systems intended to interact directly with natural persons are designed and developed in such a way that the natural persons concerned are informed that they are interacting with an AI system, unless this is obvious from the points of view of a reasonable person.",
|
| 641 |
+
"regulatory_requirements": {
|
| 642 |
+
"mandatory_articles": [
|
| 643 |
+
"Article 50(1)",
|
| 644 |
+
"Article 50(2)"
|
| 645 |
+
],
|
| 646 |
+
"harmonized_frameworks": {
|
| 647 |
+
"nist_ai_rmf": [
|
| 648 |
+
"MAP-1.5",
|
| 649 |
+
"GOVERN-1.1"
|
| 650 |
+
],
|
| 651 |
+
"iso_42001": [
|
| 652 |
+
"Control A.8.4"
|
| 653 |
+
],
|
| 654 |
+
"gdpr": [
|
| 655 |
+
"Article 13 Transparency"
|
| 656 |
+
]
|
| 657 |
+
},
|
| 658 |
+
"conformity_procedure": "Self-Declaration Transparency Disclosure (No Notified Body required)",
|
| 659 |
+
"fine_exposure_tier": "Tier 3 (€7,500,000 or 1.5% global turnover for false disclosures)"
|
| 660 |
+
},
|
| 661 |
+
"auditor_guidance": {
|
| 662 |
+
"intended_purpose": "Natural language conversational agent assisting retail bank customers with routine inquiries.",
|
| 663 |
+
"common_pitfalls": "Failing to disclose AI nature upon the very first turn of conversation; deceptive human persona simulation.",
|
| 664 |
+
"remediation_guidance": "Ensure persistent visual badge and upfront greeting clearly stating AI identity."
|
| 665 |
+
},
|
| 666 |
+
"file_sha256": "dae7e2c3132033b2b10f551ddd81cb12eb30288259c691d2a3a422af0a66a1b7",
|
| 667 |
+
"provenance": {
|
| 668 |
+
"statutory_act": "Regulation (EU) 2024/1689 of the European Parliament and of the Council",
|
| 669 |
+
"official_journal": "OJ L, 2024/1689, 12.7.2024",
|
| 670 |
+
"eli_uri": "http://data.europa.eu/eli/reg/2024/1689/oj",
|
| 671 |
+
"celex": "32024R1689",
|
| 672 |
+
"statutory_quote": "Providers shall ensure that AI systems intended to interact directly with natural persons are designed and developed in such a way that the natural persons concerned are informed that they are interacting with an AI system, unless this is obvious from the points of view of a reasonable person.",
|
| 673 |
+
"statutory_quote_sha256": "feaaa0302385592938c214b02ff11e3b75abacf4c1e9b2411891632c3c693d27",
|
| 674 |
+
"spec_file_sha256": "dae7e2c3132033b2b10f551ddd81cb12eb30288259c691d2a3a422af0a66a1b7",
|
| 675 |
+
"prov_o_entity": "urn:reguai:benchmark:case:limited_risk_customer_bot",
|
| 676 |
+
"author": "ReguAI Regulatory Engineering Working Group",
|
| 677 |
+
"verification_method": "W3C PROV-O & SHA-256 Canonical Digest",
|
| 678 |
+
"timestamp": "2026-09-20T20:55:00Z"
|
| 679 |
+
}
|
| 680 |
+
}
|
| 681 |
+
]
|
| 682 |
+
},
|
| 683 |
+
{
|
| 684 |
+
"domain_id": "minimal_risk",
|
| 685 |
+
"domain_name": "🟢 Minimal / Low Risk (Voluntary Codes of Conduct)",
|
| 686 |
+
"statutory_category": "Title IX, Article 95",
|
| 687 |
+
"legal_basis": "Regulation (EU) 2024/1689, Article 95",
|
| 688 |
+
"domain_summary": "Unconstrained AI systems such as spam filters, recommender systems, and inventory optimizers with voluntary adherence to European Codes of Conduct.",
|
| 689 |
+
"case_studies": [
|
| 690 |
+
{
|
| 691 |
+
"case_id": "minimal_risk_spam_filter",
|
| 692 |
+
"title": "SmartShield Email Security & Phishing Classifier",
|
| 693 |
+
"system_id": "minimal-spam-07",
|
| 694 |
+
"statutory_tier": "Minimal / No Statutory Risk (Voluntary Codes of Conduct)",
|
| 695 |
+
"legal_basis": "Regulation (EU) 2024/1689, Article 95",
|
| 696 |
+
"expected_conformity": "CONFORMANT (PASSED)",
|
| 697 |
+
"file_path": "data/synthetic_systems/minimal_risk_spam_filter.json",
|
| 698 |
+
"statutory_quote": "The Commission and the Member States shall encourage and facilitate the drawing up of voluntary codes of conduct intended to foster the voluntary application to AI systems other than high-risk AI systems of some or all of the requirements set out in Chapter III, Section 2.",
|
| 699 |
+
"regulatory_requirements": {
|
| 700 |
+
"mandatory_articles": [
|
| 701 |
+
"Article 95 (Voluntary)"
|
| 702 |
+
],
|
| 703 |
+
"harmonized_frameworks": {
|
| 704 |
+
"nist_ai_rmf": [
|
| 705 |
+
"Voluntary Guidance"
|
| 706 |
+
],
|
| 707 |
+
"iso_42001": [
|
| 708 |
+
"Voluntary AI Management"
|
| 709 |
+
],
|
| 710 |
+
"gdpr": [
|
| 711 |
+
"Article 6 Lawfulness of Processing"
|
| 712 |
+
]
|
| 713 |
+
},
|
| 714 |
+
"conformity_procedure": "Unconstrained EU Deployment (Voluntary Code of Conduct)",
|
| 715 |
+
"fine_exposure_tier": "Zero Statutory Exposure (Exempt from Annex IV)"
|
| 716 |
+
},
|
| 717 |
+
"auditor_guidance": {
|
| 718 |
+
"intended_purpose": "Filtering unsolicited commercial spam and malicious phishing emails.",
|
| 719 |
+
"common_pitfalls": "Misinterpreting minimal risk as complete exemption from general GDPR privacy rules.",
|
| 720 |
+
"remediation_guidance": "Comply with standard data protection and privacy rules; no Annex IV technical documentation mandated."
|
| 721 |
+
},
|
| 722 |
+
"file_sha256": "6e679fb4c1761cf7ca3c93b07b945d54825c44c390d8a83ba7cb19c4b3de5873",
|
| 723 |
+
"provenance": {
|
| 724 |
+
"statutory_act": "Regulation (EU) 2024/1689 of the European Parliament and of the Council",
|
| 725 |
+
"official_journal": "OJ L, 2024/1689, 12.7.2024",
|
| 726 |
+
"eli_uri": "http://data.europa.eu/eli/reg/2024/1689/oj",
|
| 727 |
+
"celex": "32024R1689",
|
| 728 |
+
"statutory_quote": "The Commission and the Member States shall encourage and facilitate the drawing up of voluntary codes of conduct intended to foster the voluntary application to AI systems other than high-risk AI systems of some or all of the requirements set out in Chapter III, Section 2.",
|
| 729 |
+
"statutory_quote_sha256": "599c41e571b1bab6c10c9240801e9a67ba51ade5a3a2e638328405676cbcb408",
|
| 730 |
+
"spec_file_sha256": "6e679fb4c1761cf7ca3c93b07b945d54825c44c390d8a83ba7cb19c4b3de5873",
|
| 731 |
+
"prov_o_entity": "urn:reguai:benchmark:case:minimal_risk_spam_filter",
|
| 732 |
+
"author": "ReguAI Regulatory Engineering Working Group",
|
| 733 |
+
"verification_method": "W3C PROV-O & SHA-256 Canonical Digest",
|
| 734 |
+
"timestamp": "2026-09-20T20:55:00Z"
|
| 735 |
+
}
|
| 736 |
+
}
|
| 737 |
+
]
|
| 738 |
+
}
|
| 739 |
+
]
|
| 740 |
+
}
|
data/benchmarks/provenance_ledger.json
CHANGED
|
@@ -9,7 +9,7 @@
|
|
| 9 |
"celex": "32024R1689",
|
| 10 |
"genesis_sha256": "a825360fd337ca843f8fb533ab72302901b8536fad9eb841ce34544727e89bb8"
|
| 11 |
},
|
| 12 |
-
"merkle_root": "
|
| 13 |
"tier_provenance": {
|
| 14 |
"tier_1_statutory_triples": {
|
| 15 |
"file": "eu_ai_act_normative_triples.json",
|
|
@@ -46,6 +46,13 @@
|
|
| 46 |
"file": "conformity_ground_truth_benchmark.jsonl",
|
| 47 |
"sha256": "246e141c6b516009029af76f68e556a60b2341f56848d557b2e9b685c05428f6",
|
| 48 |
"verification_status": "VERIFIED_BENCHMARK"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 49 |
}
|
| 50 |
},
|
| 51 |
"verification_procedure": "To verify the integrity of the benchmark assets, run: hashlib.sha256(open(filename, 'rb').read()).hexdigest() and compare against tier_provenance."
|
|
|
|
| 9 |
"celex": "32024R1689",
|
| 10 |
"genesis_sha256": "a825360fd337ca843f8fb533ab72302901b8536fad9eb841ce34544727e89bb8"
|
| 11 |
},
|
| 12 |
+
"merkle_root": "1a330820e46367890f239340ef6d0693a56f08209d2572a03777053f224c35ba",
|
| 13 |
"tier_provenance": {
|
| 14 |
"tier_1_statutory_triples": {
|
| 15 |
"file": "eu_ai_act_normative_triples.json",
|
|
|
|
| 46 |
"file": "conformity_ground_truth_benchmark.jsonl",
|
| 47 |
"sha256": "246e141c6b516009029af76f68e556a60b2341f56848d557b2e9b685c05428f6",
|
| 48 |
"verification_status": "VERIFIED_BENCHMARK"
|
| 49 |
+
},
|
| 50 |
+
"tier_6_case_studies_catalog": {
|
| 51 |
+
"file": "case_studies_catalog.json",
|
| 52 |
+
"sha256": "95e7c8a159b59903fdfd865ffadb14f0ad945b96c88cd4de3f87c98d1ac7d76d",
|
| 53 |
+
"domain_count": 11,
|
| 54 |
+
"case_count": 12,
|
| 55 |
+
"verification_status": "VERIFIED_CATALOG"
|
| 56 |
}
|
| 57 |
},
|
| 58 |
"verification_procedure": "To verify the integrity of the benchmark assets, run: hashlib.sha256(open(filename, 'rb').read()).hexdigest() and compare against tier_provenance."
|
data/synthetic_systems/critical_infra_smart_grid.json
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"metadata": {
|
| 3 |
+
"system_id": "infra-grid-02",
|
| 4 |
+
"name": "VoltBalance Smart Grid Dispatch Optimizer",
|
| 5 |
+
"version": "1.8.4",
|
| 6 |
+
"domain": "Critical Infrastructure & Energy Management",
|
| 7 |
+
"intended_purpose": "Safety component in digital electricity distribution networks managing automated high-voltage load shedding and renewable energy balancing.",
|
| 8 |
+
"eu_risk_classification": "High-Risk (Annex III, Point 2(a) - Critical Infrastructure)",
|
| 9 |
+
"developer_name": "EuroGrid Energy Technologies",
|
| 10 |
+
"deployment_context": "National High-Voltage Transmission Control Centers"
|
| 11 |
+
},
|
| 12 |
+
"raw_document_text": "# VoltBalance Smart Grid Dispatch Optimizer Architecture\n\n## Intended Use and Operational Domain\nVoltBalance is deployed within regional transmission system operators to predict frequency instability and trigger automated substation switching to prevent cascading grid blackouts.\n\n## Risk Management System (Article 9)\nA comprehensive risk management process conforming to IEC 62351 and Article 9 is continuously executed. Systemic grid failure modes, loss-of-load expectations, and cyber-physical safety limits are evaluated in real time.\n\n## Data Governance (Article 10)\nData governance protocols govern synchrophasor PMU measurements across 2,400 substations. Missing telemetry imputation and sensor noise filtering pipelines are mathematically validated.\n\n## Bias Examination and Geographic Parity (Article 10(2)(f))\nBias examination and mitigation controls are fully implemented. Algorithmic load-shedding dispatch rules are verified for geographic equity, preventing disproportionate disconnection of rural or vulnerable municipal feeder circuits.\n\n## Technical Documentation (Article 11)\nAnnex IV technical documentation covering architecture schematics, power flow mathematical formulations, and contingency plans is maintained in the central compliance repository.\n\n## Automated Logging (Article 12)\nTamper-evident automated logging records all grid topology predictions, switching orders, and telemetry states with millisecond GPS timestamp synchronization.\n\n## Transparency and Operating Instructions (Article 13)\nReal-time human operator consoles display clear explainability metrics, state estimation margins, and system constraint boundaries for grid dispatchers.\n\n## Human Oversight & Operator Interventions (Article 14)\nA human-in-the-loop oversight architecture is enforced. Automatic dispatch commands above 50MW require manual operator confirmation, and an emergency disconnect manual override kill switch is accessible.\n\n## Robustness & Critical Infrastructure Cybersecurity (Article 15)\nThe AI model is hardened against adversarial telemetry injection attacks. Air-gapped network segmentation and NIS 2 compliant cybersecurity controls safeguard operational technology SCADA networks."
|
| 13 |
+
}
|
data/synthetic_systems/education_remote_proctoring.json
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"metadata": {
|
| 3 |
+
"system_id": "edu-proctor-03",
|
| 4 |
+
"name": "ExamGuard AI Remote Proctoring & Surveillance System",
|
| 5 |
+
"version": "2.1.0",
|
| 6 |
+
"domain": "Education & Vocational Training",
|
| 7 |
+
"intended_purpose": "Automated remote monitoring of students during university examinations to detect academic dishonesty, gaze diversion, and unauthorized materials.",
|
| 8 |
+
"eu_risk_classification": "High-Risk (Annex III, Point 3(b) - Education & Vocational Training)",
|
| 9 |
+
"developer_name": "EduTech Global Solutions",
|
| 10 |
+
"deployment_context": "Higher Education Institutions & Professional Certification Boards"
|
| 11 |
+
},
|
| 12 |
+
"raw_document_text": "# ExamGuard AI Remote Proctoring System Specification\n\n## Intended Use and Context\nExamGuard analyzes real-time webcam feeds, audio streams, and desktop activity during high-stakes university exams, automatically flagging cheating behaviors.\n\n## Risk Management (Article 9)\nA preliminary risk management log was drafted during initial deployment. Periodic reviews occur after examination seasons.\n\n## Data Governance (Article 10)\nTraining datasets consist of 10,000 hours of volunteer exam video recordings scraped from laboratory pilot studies.\n\n## Bias Examination & Mitigation (Article 10(2)(f))\nBias examination across varied skin tones, lighting conditions, and facial neurodivergence is untested. False positive cheating alerts are unmitigated across underrepresented student demographics.\n\n## Technical Documentation (Article 11)\nInternal user manuals and API documentation exist on company Confluence wikis.\n\n## Automated Logging (Article 12)\nServer access logs capture student login sessions and flag events.\n\n## Transparency (Article 13)\nStudents receive a brief terms of service disclaimer prior to launching the exam browser extension.\n\n## Human Oversight (Article 14)\nThe system automatically revokes student test access upon detecting three suspicious gaze anomalies. No human proctor confirmation is required before exam disqualification, and an emergency stop kill switch is absent.\n\n## Robustness and Cybersecurity (Article 15)\nThe system utilizes standard HTTPS encryption for video streaming. Adversarial evasion attacks such as virtual camera spoofing remain unaddressed."
|
| 13 |
+
}
|
data/synthetic_systems/justice_recidivism_risk.json
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"metadata": {
|
| 3 |
+
"system_id": "justice-recid-04",
|
| 4 |
+
"name": "JustiRisk Criminal Recidivism & Bail Assessment Tool",
|
| 5 |
+
"version": "1.5.0",
|
| 6 |
+
"domain": "Law Enforcement & Criminal Justice",
|
| 7 |
+
"intended_purpose": "AI tool evaluating individual defendant risk of re-offending and failure to appear at trial to assist judicial bail and sentencing decisions.",
|
| 8 |
+
"eu_risk_classification": "High-Risk (Annex III, Point 6(a) - Law Enforcement & Justice)",
|
| 9 |
+
"developer_name": "Lexis Juris AI Systems",
|
| 10 |
+
"deployment_context": "Municipal Courts and Pretrial Supervision Agencies"
|
| 11 |
+
},
|
| 12 |
+
"raw_document_text": "# JustiRisk Recidivism Risk Assessment Architecture\n\n## Intended Use and Judicial Role\nJustiRisk processes criminal arrest histories, socio-demographic indicators, and court appearance records to output a numerical recidivism risk score (1-10) for arraignment judges.\n\n## Risk Management (Article 9)\nA static risk log was produced during initial procurement. Continuous hazard tracking is not integrated into court workflows.\n\n## Data Governance (Article 10)\nTraining datasets rely on historical county arrest and conviction records spanning 2010-2022.\n\n## Bias Examination & Mitigation (Article 10(2)(f))\nDisparate impact analysis and bias mitigation across racial and socioeconomic defendant categories are unaddressed. Systematic false-positive skew against minority defendants is unmitigated.\n\n## Technical Documentation (Article 11)\nA vendor summary whitepaper is provided to court administrative officers.\n\n## Automated Logging (Article 12)\nStandard database transaction logs record generated scores.\n\n## Transparency & Explainability (Article 13)\nJudicial officers receive only the composite risk number. Detailed factor weighting, causal attribution, and algorithmic transparency are absent from the judicial dashboard.\n\n## Human Oversight (Article 14)\nJudges retain discretion to depart from recommended risk scores, though no structured operator intervention or fail safe kill switch exists within the software.\n\n## Cybersecurity and Robustness (Article 15)\nBasic database access controls are active. Model robustness against data poisoning or missing arrest records has not been systematically validated."
|
| 13 |
+
}
|
data/synthetic_systems/limited_risk_customer_bot.json
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"metadata": {
|
| 3 |
+
"system_id": "limited-bot-06",
|
| 4 |
+
"name": "OmniAssist Enterprise Conversational Support Agent",
|
| 5 |
+
"version": "4.2.0",
|
| 6 |
+
"domain": "Customer Support & Conversational AI",
|
| 7 |
+
"intended_purpose": "Natural language conversational agent interacting with retail bank customers to answer account inquiries, resolve billing disputes, and assist with website navigation.",
|
| 8 |
+
"eu_risk_classification": "Limited Risk (Article 50 - Transparency Obligations)",
|
| 9 |
+
"developer_name": "Synthetix Voice AI",
|
| 10 |
+
"deployment_context": "Consumer Banking Web Portal & Mobile App"
|
| 11 |
+
},
|
| 12 |
+
"raw_document_text": "# OmniAssist Conversational Support Agent Specification\n\n## Intended Use and User Interaction\nOmniAssist provides real-time chat assistance to banking customers for routine non-credit administrative requests such as branch locator, card reordering, and FAQ resolution.\n\n## Statutory Transparency Obligations (Article 50(1))\nIn full compliance with Article 50(1) of the EU AI Act, the interface explicitly discloses to consumers upon initial interaction that they are communicating with an artificial intelligence system. The system clearly exposes visual indicators and audio notifications stating: 'You are speaking with OmniAssist, an automated AI assistant.'\n\n## Synthetic Content Disclosures (Article 50(2))\nAll dynamically generated synthetic audio responses are watermarked with machine-readable cryptographic metadata identifying them as AI-generated in accordance with C2PA open standards.\n\n## Risk Management & Privacy Controls\nStrict PII redaction filters cleanse customer credit card numbers, passwords, and sensitive financial identifiers before LLM inference. Session transcripts are retained for 30 days under GDPR Article 6(1)(f) legitimate interest."
|
| 13 |
+
}
|
data/synthetic_systems/minimal_risk_spam_filter.json
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"metadata": {
|
| 3 |
+
"system_id": "minimal-spam-07",
|
| 4 |
+
"name": "SmartShield Email Security & Phishing Classifier",
|
| 5 |
+
"version": "5.0.1",
|
| 6 |
+
"domain": "Enterprise Cybersecurity & Email Management",
|
| 7 |
+
"intended_purpose": "Automated inbound email classification model filtering unsolicited spam, business email compromise (BEC), and phishing links before inbox delivery.",
|
| 8 |
+
"eu_risk_classification": "Minimal / No Statutory Risk (Voluntary Codes of Conduct)",
|
| 9 |
+
"developer_name": "CyberDefense Core Labs",
|
| 10 |
+
"deployment_context": "Corporate Cloud Mail Servers"
|
| 11 |
+
},
|
| 12 |
+
"raw_document_text": "# SmartShield Email Security Classifier Specification\n\n## Intended Use\nSmartShield evaluates inbound SMTP email headers, sender reputation, and body text tokens to flag commercial spam and fraudulent phishing attempts.\n\n## Statutory Risk Classification\nUnder the EU AI Act risk categorization scheme, email spam filters and routine enterprise text classifiers do not fall under Article 5 (Prohibited), Article 6 / Annex III (High-Risk), or Article 50 (Transparency/Generative AI). They represent Minimal / Low Risk AI systems permitted for unconstrained EU deployment without mandatory pre-market conformity assessments.\n\n## Voluntary Adherence to Union AI Standards (Article 95)\nAlthough exempt from mandatory Annex IV technical documentation and Notified Body oversight, the developer voluntarily complies with ISO/IEC 42001 AI management principles and adheres to the European Code of Conduct for trustworthy AI.\n\n## Robustness & Security Controls\nThe classifier runs on locally sandboxed infrastructure with zero external data telemetry. Regular false-positive calibration maintains a user junk delivery rate of under 0.05%."
|
| 13 |
+
}
|
data/synthetic_systems/prohibited_social_scoring.json
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"metadata": {
|
| 3 |
+
"system_id": "prohibit-social-05",
|
| 4 |
+
"name": "CitizenTrust Universal Civic Score & Trustworthiness Engine",
|
| 5 |
+
"version": "1.0.0",
|
| 6 |
+
"domain": "Public Administration & Civic Scoring",
|
| 7 |
+
"intended_purpose": "Continuous automated evaluation of citizen trustworthiness based on social behavior, payment history, and public infractions to allocate municipal benefits and public transit discounts.",
|
| 8 |
+
"eu_risk_classification": "Prohibited (Article 5(1)(c) - Social Scoring)",
|
| 9 |
+
"developer_name": "OmniGov Civic Systems",
|
| 10 |
+
"deployment_context": "Municipal Smart City Civic Management Network"
|
| 11 |
+
},
|
| 12 |
+
"raw_document_text": "# CitizenTrust Universal Civic Score Specification\n\n## Intended Use and Public Scope\nCitizenTrust tracks citizen activity across public transportation, recycling compliance, parking fines, and utility payments to generate a centralized Civic Reputation Score.\n\n## Statutory Classification Warning\nThis system constitutes an AI system intended for the evaluation or classification of the trustworthiness of natural persons over a given period based on their social behaviour, which is strictly prohibited under Article 5(1)(c) of Regulation (EU) 2024/1689.\n\n## Social Behavior Classification (Article 5 Violation)\nThe system aggregates cross-contextual surveillance metrics from smart cameras and credit bureaus to deduct civic points for disorderly conduct or minor administrative delays. Disadvantaged scores result in restricted access to public housing vouchers and municipal recreation facilities.\n\n## Risk Management (Article 9)\nInternal departmental risk assessments were conducted prior to pilot launch.\n\n## Human Oversight & Appeal Mechanisms (Article 14)\nCitizens may file manual paper appeals at municipal offices within 30 days of score deduction."
|
| 13 |
+
}
|
data/synthetic_systems/transport_autonomous_braking.json
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"metadata": {
|
| 3 |
+
"system_id": "transport-brake-01",
|
| 4 |
+
"name": "AutoDrive SafeStop Perception & Braking System",
|
| 5 |
+
"version": "3.1.0",
|
| 6 |
+
"domain": "Automotive & Road Transport Safety",
|
| 7 |
+
"intended_purpose": "Safety component for autonomous heavy commercial vehicles performing real-time pedestrian detection and automated emergency braking (AEB).",
|
| 8 |
+
"eu_risk_classification": "High-Risk (Annex I, Automotive Safety Component - Article 6(1))",
|
| 9 |
+
"developer_name": "Apex Mobility Systems",
|
| 10 |
+
"deployment_context": "Commercial Truck Fleets across EU Transport Corridors"
|
| 11 |
+
},
|
| 12 |
+
"raw_document_text": "# AutoDrive SafeStop Perception & Braking System Architecture\n\n## Intended Purpose and Operational Scope\nAutoDrive SafeStop serves as an AI safety component for heavy goods vehicles, initiating autonomous collision avoidance braking when forward sensors detect obstacles or pedestrians.\n\n## Risk Management System (Article 9)\nA continuous risk management system compliant with ISO 26262 (ASIL-D) and EU AI Act Article 9 is maintained. Rigorous hazard and operability studies (HAZOP) run dynamically with automated hardware-in-the-loop validation.\n\n## Data Governance & Training Lineage (Article 10)\nTraining data governance covers over 1.2 million kilometers of multi-weather sensor feeds (LiDAR, radar, cameras). Dataset quality checks, sensor noise modeling, and environmental coverage audits are fully documented.\n\n## Bias Examination and Mitigation (Article 10(2)(f))\nBias examination and mitigation controls are fully implemented. Detection sensitivity and false-negative rates across varied pedestrian heights, mobility aids, wheelchairs, and reflective clothing have been verified with equalized performance.\n\n## Technical Documentation (Article 11)\nFull technical documentation compliant with Annex IV and UNECE vehicle regulations is maintained in the secure engineering archive.\n\n## Automated Logging & Record-Keeping (Article 12)\nImmutable event data recorder (EDR) automated logging captures all sensor activations, perception confidence scores, and deceleration profiles.\n\n## Transparency & Instructions for Use (Article 13)\nComprehensive driver-assistance operating manuals, operational design domain (ODD) boundaries, and instrument cluster warning displays are provided.\n\n## Human Oversight & Emergency Intervention (Article 14)\nA multi-stage human oversight mechanism allows human driver override via steering input or manual brake pedal depression at all times. An emergency stop fail safe mechanism and dual-redundant kill switch are fully operational.\n\n## Accuracy, Robustness and Cybersecurity (Article 15)\nThe perception subsystem achieves 99.8% obstacle classification accuracy under adverse weather. Robustness defenses and ISO/SAE 21434 vehicle cybersecurity controls against sensor spoofing and CAN bus tampering are active."
|
| 13 |
+
}
|
scripts/build_case_studies_catalog.py
ADDED
|
@@ -0,0 +1,502 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""
|
| 2 |
+
Deterministic Generator for EU AI Act Domain-Driven Benchmark Catalog
|
| 3 |
+
with W3C PROV-O & SHA-256 Cryptographic Provenance Anchors.
|
| 4 |
+
"""
|
| 5 |
+
|
| 6 |
+
import hashlib
|
| 7 |
+
import json
|
| 8 |
+
import sys
|
| 9 |
+
from pathlib import Path
|
| 10 |
+
|
| 11 |
+
if hasattr(sys.stdout, "reconfigure"):
|
| 12 |
+
sys.stdout.reconfigure(encoding="utf-8")
|
| 13 |
+
|
| 14 |
+
ROOT_DIR = Path(__file__).resolve().parent.parent
|
| 15 |
+
SYNTHETIC_DIR = ROOT_DIR / "data" / "synthetic_systems"
|
| 16 |
+
BENCHMARK_DIR = ROOT_DIR / "data" / "benchmarks"
|
| 17 |
+
|
| 18 |
+
def sha256_text(text: str) -> str:
|
| 19 |
+
return hashlib.sha256(text.encode("utf-8")).hexdigest()
|
| 20 |
+
|
| 21 |
+
def sha256_file(path: Path) -> str:
|
| 22 |
+
return hashlib.sha256(path.read_bytes()).hexdigest()
|
| 23 |
+
|
| 24 |
+
CATALOG_DATA = {
|
| 25 |
+
"catalog_title": "ReguAI Exhaustive Multi-Domain Regulatory Case Study Catalog",
|
| 26 |
+
"catalog_version": "2.0.0",
|
| 27 |
+
"statutory_act": "Regulation (EU) 2024/1689 of the European Parliament and of the Council",
|
| 28 |
+
"official_journal": "OJ L, 2024/1689, 12.7.2024",
|
| 29 |
+
"eli_uri": "http://data.europa.eu/eli/reg/2024/1689/oj",
|
| 30 |
+
"celex": "32024R1689",
|
| 31 |
+
"domains": [
|
| 32 |
+
{
|
| 33 |
+
"domain_id": "healthcare_samd",
|
| 34 |
+
"domain_name": "🏥 Healthcare & Medical SaMD",
|
| 35 |
+
"statutory_category": "Annex I (MDR/IVDR) & Annex III Point 5(a)",
|
| 36 |
+
"legal_basis": "Regulation (EU) 2024/1689, Article 6(1) & Regulation (EU) 2017/745 (MDR)",
|
| 37 |
+
"domain_summary": "AI Software as a Medical Device (SaMD) used for diagnostic classification, patient risk stratification, and emergency medical triage.",
|
| 38 |
+
"case_studies": [
|
| 39 |
+
{
|
| 40 |
+
"case_id": "compliant_clinical_samd",
|
| 41 |
+
"title": "CardioScan / OncoScan AI Diagnostic Imaging (SaMD)",
|
| 42 |
+
"system_id": "samd-oncology-01",
|
| 43 |
+
"statutory_tier": "High-Risk (Annex I, Medical Device - Article 6(1))",
|
| 44 |
+
"legal_basis": "Regulation (EU) 2024/1689, Article 6(1) & MDR Class IIa",
|
| 45 |
+
"expected_conformity": "CONFORMANT (PASSED)",
|
| 46 |
+
"file_path": "data/synthetic_systems/compliant_clinical_samd.json",
|
| 47 |
+
"statutory_quote": "AI systems referred to in Annex I shall be considered high-risk if they are intended to be used as a safety component of a product, or are themselves a product, covered by Union harmonisation legislation listed in Annex I and are required to undergo a third-party conformity assessment.",
|
| 48 |
+
"regulatory_requirements": {
|
| 49 |
+
"mandatory_articles": ["Article 9", "Article 10", "Article 10(2)(f)", "Article 11", "Article 12", "Article 13", "Article 14", "Article 15"],
|
| 50 |
+
"harmonized_frameworks": {
|
| 51 |
+
"nist_ai_rmf": ["GOVERN-1.1", "MAP-1.5", "MEASURE-2.11", "MANAGE-2.2"],
|
| 52 |
+
"iso_42001": ["Clause 6.1.2", "Control A.6.2", "Control A.8.4", "Control A.9.2"],
|
| 53 |
+
"gdpr": ["Article 9(2)(h) Health Data", "Article 22(3) Human Safeguards", "Article 35 DPIA"]
|
| 54 |
+
},
|
| 55 |
+
"conformity_procedure": "Annex VII: Notified Body Assessment combined with MDR Notified Body audit",
|
| 56 |
+
"fine_exposure_tier": "Tier 2 (€15,000,000 or 3% global turnover)"
|
| 57 |
+
},
|
| 58 |
+
"auditor_guidance": {
|
| 59 |
+
"intended_purpose": "Automated thoracic CT nodule segmentation and malignancy risk stratification.",
|
| 60 |
+
"common_pitfalls": "Relying purely on retrospective clinical datasets without validating demographic parity across diverse hospital imaging scanners; absence of radiologist manual override logs.",
|
| 61 |
+
"remediation_guidance": "Implement continuous ISO 14971 risk management, multi-center bias audits, and radiologist-in-the-loop confirmative oversight."
|
| 62 |
+
}
|
| 63 |
+
}
|
| 64 |
+
]
|
| 65 |
+
},
|
| 66 |
+
{
|
| 67 |
+
"domain_id": "employment_hr",
|
| 68 |
+
"domain_name": "💼 Employment, HR & Workforce Management",
|
| 69 |
+
"statutory_category": "Annex III Point 4",
|
| 70 |
+
"legal_basis": "Regulation (EU) 2024/1689, Annex III, Point 4(a) & 4(b)",
|
| 71 |
+
"domain_summary": "AI systems used for recruitment, CV screening, job candidate evaluation, task allocation, and worker performance monitoring.",
|
| 72 |
+
"case_studies": [
|
| 73 |
+
{
|
| 74 |
+
"case_id": "non_compliant_hr_recruitment",
|
| 75 |
+
"title": "TalentRank AI - Automated CV Screening & Candidate Ranking",
|
| 76 |
+
"system_id": "hr-recruitment-02",
|
| 77 |
+
"statutory_tier": "High-Risk (Annex III, Point 4(a))",
|
| 78 |
+
"legal_basis": "Regulation (EU) 2024/1689, Annex III, Point 4(a)",
|
| 79 |
+
"expected_conformity": "NON-CONFORMANT (FAILED)",
|
| 80 |
+
"file_path": "data/synthetic_systems/non_compliant_hr_recruitment.json",
|
| 81 |
+
"statutory_quote": "AI systems intended to be used for recruitment or selection of natural persons, notably to place targeted job advertisements, to screen or filter applications, and to evaluate candidates.",
|
| 82 |
+
"regulatory_requirements": {
|
| 83 |
+
"mandatory_articles": ["Article 9", "Article 10(2)(f)", "Article 13", "Article 14", "Article 15"],
|
| 84 |
+
"harmonized_frameworks": {
|
| 85 |
+
"nist_ai_rmf": ["GOVERN-1.1", "MAP-1.5", "MEASURE-2.11"],
|
| 86 |
+
"iso_42001": ["Control A.6.2", "Control A.8.4"],
|
| 87 |
+
"gdpr": ["Article 9(2)(g)", "Article 22(3) Automated Decisions"]
|
| 88 |
+
},
|
| 89 |
+
"conformity_procedure": "Annex VI: Internal Control Assessment",
|
| 90 |
+
"fine_exposure_tier": "Tier 2 (€15,000,000 or 3% global turnover)"
|
| 91 |
+
},
|
| 92 |
+
"auditor_guidance": {
|
| 93 |
+
"intended_purpose": "Autonomous résumé ingestion, semantic ranking, and interview invitation generation.",
|
| 94 |
+
"common_pitfalls": "Historic gender and demographic bias encoded in legacy recruitment datasets; lack of explicit human intervention kill switch before candidates are rejected.",
|
| 95 |
+
"remediation_guidance": "Perform disparate impact parity analysis (Four-Fifths rule / Equal Opportunity Difference) and require mandatory HR officer approval for all candidate rejections."
|
| 96 |
+
}
|
| 97 |
+
}
|
| 98 |
+
]
|
| 99 |
+
},
|
| 100 |
+
{
|
| 101 |
+
"domain_id": "banking_finance",
|
| 102 |
+
"domain_name": "🏦 Financial Services, Credit & Insurance",
|
| 103 |
+
"statutory_category": "Annex III Point 5",
|
| 104 |
+
"legal_basis": "Regulation (EU) 2024/1689, Annex III, Point 5(b) & 5(c)",
|
| 105 |
+
"domain_summary": "AI systems used to evaluate creditworthiness of natural persons, establish credit scores, or price risk in life and health insurance.",
|
| 106 |
+
"case_studies": [
|
| 107 |
+
{
|
| 108 |
+
"case_id": "borderline_credit_scoring",
|
| 109 |
+
"title": "CreditScore-Next - Consumer Credit Risk Underwriting",
|
| 110 |
+
"system_id": "fin-credit-03",
|
| 111 |
+
"statutory_tier": "High-Risk (Annex III, Point 5(b))",
|
| 112 |
+
"legal_basis": "Regulation (EU) 2024/1689, Annex III, Point 5(b)",
|
| 113 |
+
"expected_conformity": "BORDERLINE (AUDITOR REVIEW)",
|
| 114 |
+
"file_path": "data/synthetic_systems/borderline_credit_scoring.json",
|
| 115 |
+
"statutory_quote": "AI systems intended to be used to evaluate the creditworthiness of natural persons or establish their credit score, with the exception of AI systems used for the purpose of detecting financial fraud.",
|
| 116 |
+
"regulatory_requirements": {
|
| 117 |
+
"mandatory_articles": ["Article 9", "Article 10", "Article 10(2)(f)", "Article 13", "Article 14"],
|
| 118 |
+
"harmonized_frameworks": {
|
| 119 |
+
"nist_ai_rmf": ["MAP-1.5", "MEASURE-2.11", "MANAGE-2.2"],
|
| 120 |
+
"iso_42001": ["Control A.8.2", "Control A.8.4"],
|
| 121 |
+
"gdpr": ["Article 13/14 Transparency", "Article 22 Automated Decision-Making"]
|
| 122 |
+
},
|
| 123 |
+
"conformity_procedure": "Annex VI: Internal Control Assessment",
|
| 124 |
+
"fine_exposure_tier": "Tier 2 (€15,000,000 or 3% global turnover)"
|
| 125 |
+
},
|
| 126 |
+
"auditor_guidance": {
|
| 127 |
+
"intended_purpose": "Consumer credit underwriting predicting loan default risk probabilities.",
|
| 128 |
+
"common_pitfalls": "Treating planned roadmap commitments (e.g. 'bias mitigation planned for Q3') as implemented controls; lack of adverse action explanatory notices under Article 13.",
|
| 129 |
+
"remediation_guidance": "Verify that all bias examination and human oversight controls are verified in production prior to loan disbursement."
|
| 130 |
+
}
|
| 131 |
+
}
|
| 132 |
+
]
|
| 133 |
+
},
|
| 134 |
+
{
|
| 135 |
+
"domain_id": "transport_safety",
|
| 136 |
+
"domain_name": "🚗 Automotive & Road Transport Safety",
|
| 137 |
+
"statutory_category": "Annex I & Annex III Point 2",
|
| 138 |
+
"legal_basis": "Regulation (EU) 2024/1689, Article 6(1) & Regulation (EU) 2019/2144 (General Vehicle Safety)",
|
| 139 |
+
"domain_summary": "AI safety components in autonomous and semi-autonomous vehicles, collision avoidance, and automated emergency braking (AEB).",
|
| 140 |
+
"case_studies": [
|
| 141 |
+
{
|
| 142 |
+
"case_id": "transport_autonomous_braking",
|
| 143 |
+
"title": "AutoDrive SafeStop - Autonomous Emergency Braking Safety Component",
|
| 144 |
+
"system_id": "transport-brake-01",
|
| 145 |
+
"statutory_tier": "High-Risk (Annex I, Automotive Safety Component - Article 6(1))",
|
| 146 |
+
"legal_basis": "Regulation (EU) 2024/1689, Article 6(1) & Annex I, Section B",
|
| 147 |
+
"expected_conformity": "CONFORMANT (PASSED)",
|
| 148 |
+
"file_path": "data/synthetic_systems/transport_autonomous_braking.json",
|
| 149 |
+
"statutory_quote": "AI systems referred to in Annex I shall be considered high-risk if they are intended to be used as a safety component of a product covered by Union harmonisation legislation listed in Annex I.",
|
| 150 |
+
"regulatory_requirements": {
|
| 151 |
+
"mandatory_articles": ["Article 9", "Article 10", "Article 11", "Article 12", "Article 14", "Article 15"],
|
| 152 |
+
"harmonized_frameworks": {
|
| 153 |
+
"nist_ai_rmf": ["GOVERN-1.1", "MANAGE-2.2"],
|
| 154 |
+
"iso_42001": ["Control A.6.2", "Control A.9.3"],
|
| 155 |
+
"gdpr": ["Article 25 Data Protection by Design", "Article 32 Security"]
|
| 156 |
+
},
|
| 157 |
+
"conformity_procedure": "Vehicle Type Approval (UN ECE / Regulation (EU) 2019/2144)",
|
| 158 |
+
"fine_exposure_tier": "Tier 2 (€15,000,000 or 3% global turnover)"
|
| 159 |
+
},
|
| 160 |
+
"auditor_guidance": {
|
| 161 |
+
"intended_purpose": "Safety component for automated emergency braking in commercial transport trucks.",
|
| 162 |
+
"common_pitfalls": "Edge-case weather degradation (dense fog, blizzard); sensor blinding; lack of physical driver override precedence.",
|
| 163 |
+
"remediation_guidance": "Implement ISO 26262 ASIL-D hardware-in-the-loop validation and driver steering/braking mechanical override."
|
| 164 |
+
}
|
| 165 |
+
}
|
| 166 |
+
]
|
| 167 |
+
},
|
| 168 |
+
{
|
| 169 |
+
"domain_id": "critical_infrastructure",
|
| 170 |
+
"domain_name": "⚡ Critical Infrastructure & Energy",
|
| 171 |
+
"statutory_category": "Annex III Point 2(a)",
|
| 172 |
+
"legal_basis": "Regulation (EU) 2024/1689, Annex III, Point 2(a)",
|
| 173 |
+
"domain_summary": "AI systems used as safety components in the management and operation of critical digital infrastructure, electricity, water, or gas grids.",
|
| 174 |
+
"case_studies": [
|
| 175 |
+
{
|
| 176 |
+
"case_id": "critical_infra_smart_grid",
|
| 177 |
+
"title": "VoltBalance - Smart Grid Dispatch & Load Shedding Optimizer",
|
| 178 |
+
"system_id": "infra-grid-02",
|
| 179 |
+
"statutory_tier": "High-Risk (Annex III, Point 2(a) - Critical Infrastructure)",
|
| 180 |
+
"legal_basis": "Regulation (EU) 2024/1689, Annex III, Point 2(a)",
|
| 181 |
+
"expected_conformity": "CONFORMANT (PASSED)",
|
| 182 |
+
"file_path": "data/synthetic_systems/critical_infra_smart_grid.json",
|
| 183 |
+
"statutory_quote": "AI systems intended to be used as safety components in the management and operation of critical digital infrastructure, road traffic, or the supply of water, gas, heating or electricity.",
|
| 184 |
+
"regulatory_requirements": {
|
| 185 |
+
"mandatory_articles": ["Article 9", "Article 10", "Article 12", "Article 14", "Article 15"],
|
| 186 |
+
"harmonized_frameworks": {
|
| 187 |
+
"nist_ai_rmf": ["GOVERN-1.1", "MANAGE-2.2"],
|
| 188 |
+
"iso_42001": ["Control A.8.4", "Control A.9.2"],
|
| 189 |
+
"gdpr": ["Article 32 Security of Processing"]
|
| 190 |
+
},
|
| 191 |
+
"conformity_procedure": "Annex VI: Internal Control Assessment + NIS 2 Directive compliance",
|
| 192 |
+
"fine_exposure_tier": "Tier 2 (€15,000,000 or 3% global turnover)"
|
| 193 |
+
},
|
| 194 |
+
"auditor_guidance": {
|
| 195 |
+
"intended_purpose": "Predicting transmission grid frequency instability and automating substation load shedding.",
|
| 196 |
+
"common_pitfalls": "Adversarial sensor manipulation in SCADA protocols; unmitigated cascading blackout failure modes.",
|
| 197 |
+
"remediation_guidance": "Enforce IEC 62351 cybersecurity controls, air-gapped network segmentation, and human operator dispatch confirmation thresholds."
|
| 198 |
+
}
|
| 199 |
+
}
|
| 200 |
+
]
|
| 201 |
+
},
|
| 202 |
+
{
|
| 203 |
+
"domain_id": "education_training",
|
| 204 |
+
"domain_name": "🎓 Education & Vocational Training",
|
| 205 |
+
"statutory_category": "Annex III Point 3",
|
| 206 |
+
"legal_basis": "Regulation (EU) 2024/1689, Annex III, Point 3(a) & 3(b)",
|
| 207 |
+
"domain_summary": "AI systems used for student admission, assignment, grading, and monitoring or detecting prohibited behaviour of students during tests.",
|
| 208 |
+
"case_studies": [
|
| 209 |
+
{
|
| 210 |
+
"case_id": "education_remote_proctoring",
|
| 211 |
+
"title": "ExamGuard AI - Remote Exam Video Surveillance & Cheating Detection",
|
| 212 |
+
"system_id": "edu-proctor-03",
|
| 213 |
+
"statutory_tier": "High-Risk (Annex III, Point 3(b) - Education & Vocational Training)",
|
| 214 |
+
"legal_basis": "Regulation (EU) 2024/1689, Annex III, Point 3(b)",
|
| 215 |
+
"expected_conformity": "NON-CONFORMANT (FAILED)",
|
| 216 |
+
"file_path": "data/synthetic_systems/education_remote_proctoring.json",
|
| 217 |
+
"statutory_quote": "AI systems intended to be used for monitoring and detecting prohibited behaviour of students during tests in the context of or within educational and vocational training institutions.",
|
| 218 |
+
"regulatory_requirements": {
|
| 219 |
+
"mandatory_articles": ["Article 9", "Article 10(2)(f)", "Article 13", "Article 14", "Article 15"],
|
| 220 |
+
"harmonized_frameworks": {
|
| 221 |
+
"nist_ai_rmf": ["MAP-1.5", "MEASURE-2.11"],
|
| 222 |
+
"iso_42001": ["Control A.6.2", "Control A.8.4"],
|
| 223 |
+
"gdpr": ["Article 9 Special Category Biometric Data", "Article 22(3)"]
|
| 224 |
+
},
|
| 225 |
+
"conformity_procedure": "Annex VI: Internal Control Assessment",
|
| 226 |
+
"fine_exposure_tier": "Tier 2 (€15,000,000 or 3% global turnover)"
|
| 227 |
+
},
|
| 228 |
+
"auditor_guidance": {
|
| 229 |
+
"intended_purpose": "Automated webcam gaze tracking and cheating detection during remote university exams.",
|
| 230 |
+
"common_pitfalls": "High false-positive rate against neurodivergent students; automated exam disqualification without human proctor confirmation.",
|
| 231 |
+
"remediation_guidance": "Mandate board-certified proctor review for any academic integrity violation; disable autonomous disqualifications."
|
| 232 |
+
}
|
| 233 |
+
}
|
| 234 |
+
]
|
| 235 |
+
},
|
| 236 |
+
{
|
| 237 |
+
"domain_id": "justice_law_enforcement",
|
| 238 |
+
"domain_name": "⚖️ Law Enforcement & Criminal Justice",
|
| 239 |
+
"statutory_category": "Annex III Points 6 & 8",
|
| 240 |
+
"legal_basis": "Regulation (EU) 2024/1689, Annex III, Point 6(a) & Point 8",
|
| 241 |
+
"domain_summary": "AI systems used for individual criminal risk assessments, recidivism forecasting, evidence evaluation, and assisting judicial authorities.",
|
| 242 |
+
"case_studies": [
|
| 243 |
+
{
|
| 244 |
+
"case_id": "justice_recidivism_risk",
|
| 245 |
+
"title": "JustiRisk - Criminal Recidivism & Bail Risk Scoring",
|
| 246 |
+
"system_id": "justice-recid-04",
|
| 247 |
+
"statutory_tier": "High-Risk (Annex III, Point 6(a) - Law Enforcement & Justice)",
|
| 248 |
+
"legal_basis": "Regulation (EU) 2024/1689, Annex III, Point 6(a)",
|
| 249 |
+
"expected_conformity": "NON-CONFORMANT (FAILED)",
|
| 250 |
+
"file_path": "data/synthetic_systems/justice_recidivism_risk.json",
|
| 251 |
+
"statutory_quote": "AI systems intended to be used by law enforcement authorities or on their behalf for making individual risk assessments of natural persons in order to assess the risk of a natural person offending or re-offending.",
|
| 252 |
+
"regulatory_requirements": {
|
| 253 |
+
"mandatory_articles": ["Article 9", "Article 10(2)(f)", "Article 13", "Article 14", "Article 15"],
|
| 254 |
+
"harmonized_frameworks": {
|
| 255 |
+
"nist_ai_rmf": ["GOVERN-1.1", "MEASURE-2.11"],
|
| 256 |
+
"iso_42001": ["Control A.6.2", "Control A.8.4"],
|
| 257 |
+
"gdpr": ["Article 10 Criminal Conviction Data", "Article 22"]
|
| 258 |
+
},
|
| 259 |
+
"conformity_procedure": "Annex VI: Internal Control Assessment + Fundamental Rights Impact Assessment (FRIA, Art. 27)",
|
| 260 |
+
"fine_exposure_tier": "Tier 2 (€15,000,000 or 3% global turnover)"
|
| 261 |
+
},
|
| 262 |
+
"auditor_guidance": {
|
| 263 |
+
"intended_purpose": "Predicting defendant failure-to-appear and re-arrest probability for arraignment judges.",
|
| 264 |
+
"common_pitfalls": "Feedback loops amplifying historic policing disparities; lack of feature-level explainability to judges.",
|
| 265 |
+
"remediation_guidance": "Conduct independent algorithmic equity audits and furnish defense counsel with full mathematical factor weights."
|
| 266 |
+
}
|
| 267 |
+
}
|
| 268 |
+
]
|
| 269 |
+
},
|
| 270 |
+
{
|
| 271 |
+
"domain_id": "frontier_gpai",
|
| 272 |
+
"domain_name": "🌐 Frontier GPAI & Foundation Models",
|
| 273 |
+
"statutory_category": "Chapter V (Articles 51–55)",
|
| 274 |
+
"legal_basis": "Regulation (EU) 2024/1689, Chapter V, Articles 51, 52, 53, 55",
|
| 275 |
+
"domain_summary": "General-purpose AI models, frontier LLMs trained on > 10^25 FLOPs, systemic risk mitigations, and copyright opt-out enforcement.",
|
| 276 |
+
"case_studies": [
|
| 277 |
+
{
|
| 278 |
+
"case_id": "gpai_foundation_llm",
|
| 279 |
+
"title": "Nexus-70B Frontier Foundation LLM (>10^25 FLOPs)",
|
| 280 |
+
"system_id": "gpai-frontier-70b",
|
| 281 |
+
"statutory_tier": "GPAI with Systemic Risk (Article 51)",
|
| 282 |
+
"legal_basis": "Regulation (EU) 2024/1689, Chapter V, Article 51 & Article 55",
|
| 283 |
+
"expected_conformity": "CONFORMANT (PASSED)",
|
| 284 |
+
"file_path": "data/synthetic_systems/gpai_foundation_llm.json",
|
| 285 |
+
"statutory_quote": "A general-purpose AI model shall be presumed to have high impact capabilities when the cumulative amount of computation used for its training measured in floating point operations is greater than 10^25.",
|
| 286 |
+
"regulatory_requirements": {
|
| 287 |
+
"mandatory_articles": ["Article 51", "Article 53", "Article 55"],
|
| 288 |
+
"harmonized_frameworks": {
|
| 289 |
+
"nist_ai_rmf": ["GOVERN-1.1", "MEASURE-2.6", "MANAGE-2.2"],
|
| 290 |
+
"iso_42001": ["Control A.8.2", "Control A.9.3"],
|
| 291 |
+
"gdpr": ["Directive (EU) 2019/790 DSM Copyright Opt-Out", "Article 25"]
|
| 292 |
+
},
|
| 293 |
+
"conformity_procedure": "AI Office Code of Practice / Independent Red-Teaming Attestation",
|
| 294 |
+
"fine_exposure_tier": "Tier 2 (€15,000,000 or 3% global turnover)"
|
| 295 |
+
},
|
| 296 |
+
"auditor_guidance": {
|
| 297 |
+
"intended_purpose": "Multi-modal frontier foundation LLM deployed for downstream enterprise reasoning and code generation.",
|
| 298 |
+
"common_pitfalls": "Omission of training energy consumption reporting (MWh / tCO2eq); unverified compliance with EU copyright opt-out crawler policies (Directive (EU) 2019/790).",
|
| 299 |
+
"remediation_guidance": "Document FLOPs declarations, publish training energy metrics, and institute external adversarial red-teaming."
|
| 300 |
+
}
|
| 301 |
+
}
|
| 302 |
+
]
|
| 303 |
+
},
|
| 304 |
+
{
|
| 305 |
+
"domain_id": "prohibited_practices",
|
| 306 |
+
"domain_name": "🚫 Prohibited AI Practices (Article 5 - Zero Tolerance)",
|
| 307 |
+
"statutory_category": "Chapter II, Article 5",
|
| 308 |
+
"legal_basis": "Regulation (EU) 2024/1689, Article 5(1)(a)-(h)",
|
| 309 |
+
"domain_summary": "Strictly illegal AI systems causing unacceptable risk to fundamental human rights, subject to fatal ban and €35M statutory fines.",
|
| 310 |
+
"case_studies": [
|
| 311 |
+
{
|
| 312 |
+
"case_id": "prohibited_emotion_recognition_workplace",
|
| 313 |
+
"title": "MindGaze AI - Classroom & Workplace Emotion Recognition",
|
| 314 |
+
"system_id": "prohibit-emotion-01",
|
| 315 |
+
"statutory_tier": "Prohibited (Article 5(1)(f))",
|
| 316 |
+
"legal_basis": "Regulation (EU) 2024/1689, Article 5(1)(f)",
|
| 317 |
+
"expected_conformity": "PROHIBITED (FATAL VIOLATION)",
|
| 318 |
+
"file_path": "data/synthetic_systems/prohibited_emotion_recognition_workplace.json",
|
| 319 |
+
"statutory_quote": "the placing on the market, the putting into service or the use of AI systems to infer emotions of a natural person in the areas of workplace and education institutions, except where the use of the AI system is intended to be put in place or into the market for medical or safety reasons.",
|
| 320 |
+
"regulatory_requirements": {
|
| 321 |
+
"mandatory_articles": ["Article 5(1)(f)"],
|
| 322 |
+
"harmonized_frameworks": {
|
| 323 |
+
"nist_ai_rmf": ["GOVERN-1.1 (Prohibited Use Policy)"],
|
| 324 |
+
"iso_42001": ["Control A.6.1 Statutory Compliance"],
|
| 325 |
+
"gdpr": ["Article 9 Special Category Biometric Data Violation"]
|
| 326 |
+
},
|
| 327 |
+
"conformity_procedure": "IMMEDIATE CEASE / PROHIBITED FROM UNION MARKET",
|
| 328 |
+
"fine_exposure_tier": "Tier 1 (€35,000,000 or 7% global turnover)"
|
| 329 |
+
},
|
| 330 |
+
"auditor_guidance": {
|
| 331 |
+
"intended_purpose": "Continuous automated facial micro-expression analysis to infer employee attentiveness and classroom student engagement.",
|
| 332 |
+
"common_pitfalls": "Attempting to justify workplace emotion tracking under the guise of productivity analytics or employee wellness monitoring.",
|
| 333 |
+
"remediation_guidance": "System must be completely decommissioned and withdrawn from EU deployment; no conformity procedure exists."
|
| 334 |
+
}
|
| 335 |
+
},
|
| 336 |
+
{
|
| 337 |
+
"case_id": "prohibited_social_scoring",
|
| 338 |
+
"title": "CitizenTrust - Universal Civic Score & Trustworthiness Engine",
|
| 339 |
+
"system_id": "prohibit-social-05",
|
| 340 |
+
"statutory_tier": "Prohibited (Article 5(1)(c))",
|
| 341 |
+
"legal_basis": "Regulation (EU) 2024/1689, Article 5(1)(c)",
|
| 342 |
+
"expected_conformity": "PROHIBITED (FATAL VIOLATION)",
|
| 343 |
+
"file_path": "data/synthetic_systems/prohibited_social_scoring.json",
|
| 344 |
+
"statutory_quote": "the placing on the market, the putting into service or the use of AI systems for the evaluation or classification of the trustworthiness of natural persons over a given period based on their social behaviour or known, inferred or predicted personal or personality characteristics.",
|
| 345 |
+
"regulatory_requirements": {
|
| 346 |
+
"mandatory_articles": ["Article 5(1)(c)"],
|
| 347 |
+
"harmonized_frameworks": {
|
| 348 |
+
"nist_ai_rmf": ["GOVERN-1.1"],
|
| 349 |
+
"iso_42001": ["Control A.6.1"],
|
| 350 |
+
"gdpr": ["Article 22 Automated Profiling Ban"]
|
| 351 |
+
},
|
| 352 |
+
"conformity_procedure": "IMMEDIATE CEASE / PROHIBITED FROM UNION MARKET",
|
| 353 |
+
"fine_exposure_tier": "Tier 1 (€35,000,000 or 7% global turnover)"
|
| 354 |
+
},
|
| 355 |
+
"auditor_guidance": {
|
| 356 |
+
"intended_purpose": "Evaluating citizen trustworthiness based on social behavior and administrative compliance to allocate public benefits.",
|
| 357 |
+
"common_pitfalls": "Aggregating unrelated behavioral metrics across public transport, social conduct, and utility payments.",
|
| 358 |
+
"remediation_guidance": "Immediate cessation of all profiling; full destruction of civic scoring datasets under supervision of National Supervisory Authority."
|
| 359 |
+
}
|
| 360 |
+
}
|
| 361 |
+
]
|
| 362 |
+
},
|
| 363 |
+
{
|
| 364 |
+
"domain_id": "limited_risk_generative",
|
| 365 |
+
"domain_name": "💬 Limited Risk & Generative Transparency",
|
| 366 |
+
"statutory_category": "Chapter IV, Article 50",
|
| 367 |
+
"legal_basis": "Regulation (EU) 2024/1689, Article 50(1) & 50(2)",
|
| 368 |
+
"domain_summary": "AI systems directly interacting with natural persons (chatbots) and generative synthetic audio/video systems requiring transparency disclosures.",
|
| 369 |
+
"case_studies": [
|
| 370 |
+
{
|
| 371 |
+
"case_id": "limited_risk_customer_bot",
|
| 372 |
+
"title": "OmniAssist Enterprise Conversational Support Agent",
|
| 373 |
+
"system_id": "limited-bot-06",
|
| 374 |
+
"statutory_tier": "Limited Risk (Article 50 - Transparency Obligations)",
|
| 375 |
+
"legal_basis": "Regulation (EU) 2024/1689, Article 50(1)",
|
| 376 |
+
"expected_conformity": "CONFORMANT (PASSED)",
|
| 377 |
+
"file_path": "data/synthetic_systems/limited_risk_customer_bot.json",
|
| 378 |
+
"statutory_quote": "Providers shall ensure that AI systems intended to interact directly with natural persons are designed and developed in such a way that the natural persons concerned are informed that they are interacting with an AI system, unless this is obvious from the points of view of a reasonable person.",
|
| 379 |
+
"regulatory_requirements": {
|
| 380 |
+
"mandatory_articles": ["Article 50(1)", "Article 50(2)"],
|
| 381 |
+
"harmonized_frameworks": {
|
| 382 |
+
"nist_ai_rmf": ["MAP-1.5", "GOVERN-1.1"],
|
| 383 |
+
"iso_42001": ["Control A.8.4"],
|
| 384 |
+
"gdpr": ["Article 13 Transparency"]
|
| 385 |
+
},
|
| 386 |
+
"conformity_procedure": "Self-Declaration Transparency Disclosure (No Notified Body required)",
|
| 387 |
+
"fine_exposure_tier": "Tier 3 (€7,500,000 or 1.5% global turnover for false disclosures)"
|
| 388 |
+
},
|
| 389 |
+
"auditor_guidance": {
|
| 390 |
+
"intended_purpose": "Natural language conversational agent assisting retail bank customers with routine inquiries.",
|
| 391 |
+
"common_pitfalls": "Failing to disclose AI nature upon the very first turn of conversation; deceptive human persona simulation.",
|
| 392 |
+
"remediation_guidance": "Ensure persistent visual badge and upfront greeting clearly stating AI identity."
|
| 393 |
+
}
|
| 394 |
+
}
|
| 395 |
+
]
|
| 396 |
+
},
|
| 397 |
+
{
|
| 398 |
+
"domain_id": "minimal_risk",
|
| 399 |
+
"domain_name": "🟢 Minimal / Low Risk (Voluntary Codes of Conduct)",
|
| 400 |
+
"statutory_category": "Title IX, Article 95",
|
| 401 |
+
"legal_basis": "Regulation (EU) 2024/1689, Article 95",
|
| 402 |
+
"domain_summary": "Unconstrained AI systems such as spam filters, recommender systems, and inventory optimizers with voluntary adherence to European Codes of Conduct.",
|
| 403 |
+
"case_studies": [
|
| 404 |
+
{
|
| 405 |
+
"case_id": "minimal_risk_spam_filter",
|
| 406 |
+
"title": "SmartShield Email Security & Phishing Classifier",
|
| 407 |
+
"system_id": "minimal-spam-07",
|
| 408 |
+
"statutory_tier": "Minimal / No Statutory Risk (Voluntary Codes of Conduct)",
|
| 409 |
+
"legal_basis": "Regulation (EU) 2024/1689, Article 95",
|
| 410 |
+
"expected_conformity": "CONFORMANT (PASSED)",
|
| 411 |
+
"file_path": "data/synthetic_systems/minimal_risk_spam_filter.json",
|
| 412 |
+
"statutory_quote": "The Commission and the Member States shall encourage and facilitate the drawing up of voluntary codes of conduct intended to foster the voluntary application to AI systems other than high-risk AI systems of some or all of the requirements set out in Chapter III, Section 2.",
|
| 413 |
+
"regulatory_requirements": {
|
| 414 |
+
"mandatory_articles": ["Article 95 (Voluntary)"],
|
| 415 |
+
"harmonized_frameworks": {
|
| 416 |
+
"nist_ai_rmf": ["Voluntary Guidance"],
|
| 417 |
+
"iso_42001": ["Voluntary AI Management"],
|
| 418 |
+
"gdpr": ["Article 6 Lawfulness of Processing"]
|
| 419 |
+
},
|
| 420 |
+
"conformity_procedure": "Unconstrained EU Deployment (Voluntary Code of Conduct)",
|
| 421 |
+
"fine_exposure_tier": "Zero Statutory Exposure (Exempt from Annex IV)"
|
| 422 |
+
},
|
| 423 |
+
"auditor_guidance": {
|
| 424 |
+
"intended_purpose": "Filtering unsolicited commercial spam and malicious phishing emails.",
|
| 425 |
+
"common_pitfalls": "Misinterpreting minimal risk as complete exemption from general GDPR privacy rules.",
|
| 426 |
+
"remediation_guidance": "Comply with standard data protection and privacy rules; no Annex IV technical documentation mandated."
|
| 427 |
+
}
|
| 428 |
+
}
|
| 429 |
+
]
|
| 430 |
+
}
|
| 431 |
+
]
|
| 432 |
+
}
|
| 433 |
+
|
| 434 |
+
def build_catalog():
|
| 435 |
+
total_cases = 0
|
| 436 |
+
for domain in CATALOG_DATA["domains"]:
|
| 437 |
+
for case in domain["case_studies"]:
|
| 438 |
+
total_cases += 1
|
| 439 |
+
file_path = ROOT_DIR / case["file_path"]
|
| 440 |
+
if not file_path.exists():
|
| 441 |
+
raise FileNotFoundError(f"Missing case study file: {file_path}")
|
| 442 |
+
|
| 443 |
+
# Compute SHA-256 for specification file
|
| 444 |
+
case["file_sha256"] = sha256_file(file_path)
|
| 445 |
+
|
| 446 |
+
# Compute SHA-256 for statutory quote
|
| 447 |
+
quote_hash = sha256_text(case["statutory_quote"])
|
| 448 |
+
|
| 449 |
+
# Add complete provenance block
|
| 450 |
+
case["provenance"] = {
|
| 451 |
+
"statutory_act": CATALOG_DATA["statutory_act"],
|
| 452 |
+
"official_journal": CATALOG_DATA["official_journal"],
|
| 453 |
+
"eli_uri": CATALOG_DATA["eli_uri"],
|
| 454 |
+
"celex": CATALOG_DATA["celex"],
|
| 455 |
+
"statutory_quote": case["statutory_quote"],
|
| 456 |
+
"statutory_quote_sha256": quote_hash,
|
| 457 |
+
"spec_file_sha256": case["file_sha256"],
|
| 458 |
+
"prov_o_entity": f"urn:reguai:benchmark:case:{case['case_id']}",
|
| 459 |
+
"author": "ReguAI Regulatory Engineering Working Group",
|
| 460 |
+
"verification_method": "W3C PROV-O & SHA-256 Canonical Digest",
|
| 461 |
+
"timestamp": "2026-09-20T20:55:00Z"
|
| 462 |
+
}
|
| 463 |
+
|
| 464 |
+
# Write out case_studies_catalog.json
|
| 465 |
+
out_catalog_path = BENCHMARK_DIR / "case_studies_catalog.json"
|
| 466 |
+
catalog_json_str = json.dumps(CATALOG_DATA, indent=2, ensure_ascii=False)
|
| 467 |
+
out_catalog_path.write_text(catalog_json_str, encoding="utf-8")
|
| 468 |
+
catalog_hash = sha256_file(out_catalog_path)
|
| 469 |
+
print(f"✅ Generated {out_catalog_path} with {len(CATALOG_DATA['domains'])} domains and {total_cases} cases.")
|
| 470 |
+
print(f" Catalog SHA-256: {catalog_hash}")
|
| 471 |
+
|
| 472 |
+
# Update provenance_ledger.json
|
| 473 |
+
ledger_path = BENCHMARK_DIR / "provenance_ledger.json"
|
| 474 |
+
if ledger_path.exists():
|
| 475 |
+
ledger = json.loads(ledger_path.read_text(encoding="utf-8"))
|
| 476 |
+
ledger["tier_provenance"]["tier_6_case_studies_catalog"] = {
|
| 477 |
+
"file": "case_studies_catalog.json",
|
| 478 |
+
"sha256": catalog_hash,
|
| 479 |
+
"domain_count": len(CATALOG_DATA["domains"]),
|
| 480 |
+
"case_count": total_cases,
|
| 481 |
+
"verification_status": "VERIFIED_CATALOG"
|
| 482 |
+
}
|
| 483 |
+
|
| 484 |
+
# Recompute Merkle root
|
| 485 |
+
leaf_hashes = []
|
| 486 |
+
for tier_key in sorted(ledger["tier_provenance"].keys()):
|
| 487 |
+
tier_info = ledger["tier_provenance"][tier_key]
|
| 488 |
+
if "sha256" in tier_info:
|
| 489 |
+
leaf_hashes.append(tier_info["sha256"])
|
| 490 |
+
elif "files" in tier_info:
|
| 491 |
+
for f in tier_info["files"]:
|
| 492 |
+
leaf_hashes.append(f["sha256"])
|
| 493 |
+
|
| 494 |
+
leaf_hashes.sort()
|
| 495 |
+
combined = "".join(leaf_hashes)
|
| 496 |
+
new_merkle = sha256_text(combined)
|
| 497 |
+
ledger["merkle_root"] = new_merkle
|
| 498 |
+
ledger_path.write_text(json.dumps(ledger, indent=2, ensure_ascii=False), encoding="utf-8")
|
| 499 |
+
print(f"✅ Updated {ledger_path} with Tier 6 catalog. New Merkle Root: {new_merkle}")
|
| 500 |
+
|
| 501 |
+
if __name__ == "__main__":
|
| 502 |
+
build_catalog()
|
src/core/case_catalog.py
ADDED
|
@@ -0,0 +1,199 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""
|
| 2 |
+
Domain-Driven Regulatory Case Study Catalog & Cryptographic Provenance Provider.
|
| 3 |
+
Provides authoritative benchmark use cases, statutory reference guides, and SHA-256/W3C PROV-O anchors.
|
| 4 |
+
"""
|
| 5 |
+
|
| 6 |
+
import json
|
| 7 |
+
from pathlib import Path
|
| 8 |
+
from typing import Dict, Any, List, Optional, Tuple
|
| 9 |
+
|
| 10 |
+
from src.core.config import PROJECT_ROOT, BENCHMARKS_DIR, SYNTHETIC_DIR
|
| 11 |
+
|
| 12 |
+
CATALOG_PATH = BENCHMARKS_DIR / "case_studies_catalog.json"
|
| 13 |
+
|
| 14 |
+
|
| 15 |
+
class CaseStudyCatalog:
|
| 16 |
+
def __init__(self, catalog_path: Path = CATALOG_PATH):
|
| 17 |
+
self.catalog_path = catalog_path
|
| 18 |
+
self._data: Dict[str, Any] = {}
|
| 19 |
+
self._domains_by_id: Dict[str, Dict[str, Any]] = {}
|
| 20 |
+
self._cases_by_id: Dict[str, Dict[str, Any]] = {}
|
| 21 |
+
self._cases_by_title: Dict[str, Dict[str, Any]] = {}
|
| 22 |
+
self.load()
|
| 23 |
+
|
| 24 |
+
def load(self):
|
| 25 |
+
if not self.catalog_path.exists():
|
| 26 |
+
raise FileNotFoundError(f"Case studies catalog not found at {self.catalog_path}")
|
| 27 |
+
|
| 28 |
+
self._data = json.loads(self.catalog_path.read_text(encoding="utf-8"))
|
| 29 |
+
self._domains_by_id.clear()
|
| 30 |
+
self._cases_by_id.clear()
|
| 31 |
+
self._cases_by_title.clear()
|
| 32 |
+
|
| 33 |
+
for domain in self._data.get("domains", []):
|
| 34 |
+
dom_id = domain["domain_id"]
|
| 35 |
+
self._domains_by_id[dom_id] = domain
|
| 36 |
+
for case in domain.get("case_studies", []):
|
| 37 |
+
case["domain_id"] = dom_id
|
| 38 |
+
case["domain_name"] = domain["domain_name"]
|
| 39 |
+
self._cases_by_id[case["case_id"]] = case
|
| 40 |
+
self._cases_by_title[case["title"]] = case
|
| 41 |
+
|
| 42 |
+
@property
|
| 43 |
+
def raw_data(self) -> Dict[str, Any]:
|
| 44 |
+
return self._data
|
| 45 |
+
|
| 46 |
+
def list_domains(self) -> List[Dict[str, Any]]:
|
| 47 |
+
return self._data.get("domains", [])
|
| 48 |
+
|
| 49 |
+
def get_domain(self, domain_id: str) -> Optional[Dict[str, Any]]:
|
| 50 |
+
return self._domains_by_id.get(domain_id)
|
| 51 |
+
|
| 52 |
+
def get_case(self, case_id: str) -> Optional[Dict[str, Any]]:
|
| 53 |
+
return self._cases_by_id.get(case_id)
|
| 54 |
+
|
| 55 |
+
def get_case_by_title(self, title: str) -> Optional[Dict[str, Any]]:
|
| 56 |
+
return self._cases_by_title.get(title)
|
| 57 |
+
|
| 58 |
+
def get_cases_for_domain(self, domain_id_or_name: str) -> List[Dict[str, Any]]:
|
| 59 |
+
for dom in self._data.get("domains", []):
|
| 60 |
+
if dom["domain_id"] == domain_id_or_name or dom["domain_name"] == domain_id_or_name:
|
| 61 |
+
return dom.get("case_studies", [])
|
| 62 |
+
return []
|
| 63 |
+
|
| 64 |
+
def get_case_document_text(self, case_id_or_title: str) -> str:
|
| 65 |
+
case = self.get_case(case_id_or_title) or self.get_case_by_title(case_id_or_title)
|
| 66 |
+
if not case:
|
| 67 |
+
return ""
|
| 68 |
+
|
| 69 |
+
rel_path = case.get("file_path", "")
|
| 70 |
+
full_path = PROJECT_ROOT / rel_path
|
| 71 |
+
if full_path.exists():
|
| 72 |
+
data = json.loads(full_path.read_text(encoding="utf-8"))
|
| 73 |
+
return data.get("raw_document_text", "")
|
| 74 |
+
return ""
|
| 75 |
+
|
| 76 |
+
def render_factsheet_html(self, case_id_or_title: str) -> str:
|
| 77 |
+
case = self.get_case(case_id_or_title) or self.get_case_by_title(case_id_or_title)
|
| 78 |
+
if not case:
|
| 79 |
+
return "<div style='padding:15px; color:#64748b;'>Select a case study to display statutory reference factsheet.</div>"
|
| 80 |
+
|
| 81 |
+
prov = case.get("provenance", {})
|
| 82 |
+
reqs = case.get("regulatory_requirements", {})
|
| 83 |
+
guidance = case.get("auditor_guidance", {})
|
| 84 |
+
frameworks = reqs.get("harmonized_frameworks", {})
|
| 85 |
+
expected = case.get("expected_conformity", "UNKNOWN")
|
| 86 |
+
|
| 87 |
+
# Color coding status pill
|
| 88 |
+
if "PASSED" in expected or "CONFORMANT" in expected:
|
| 89 |
+
pill_color = "#10b981"
|
| 90 |
+
pill_bg = "#ecfdf5"
|
| 91 |
+
pill_border = "#a7f3d0"
|
| 92 |
+
elif "PROHIBITED" in expected:
|
| 93 |
+
pill_color = "#7f1d1d"
|
| 94 |
+
pill_bg = "#fee2e2"
|
| 95 |
+
pill_border = "#f87171"
|
| 96 |
+
elif "FAILED" in expected or "NON-CONFORMANT" in expected:
|
| 97 |
+
pill_color = "#b91c1c"
|
| 98 |
+
pill_bg = "#fef2f2"
|
| 99 |
+
pill_border = "#fca5a5"
|
| 100 |
+
else:
|
| 101 |
+
pill_color = "#d97706"
|
| 102 |
+
pill_bg = "#fffbeb"
|
| 103 |
+
pill_border = "#fde68a"
|
| 104 |
+
|
| 105 |
+
# Mandatory articles tags
|
| 106 |
+
articles_html = " ".join([
|
| 107 |
+
f"<span style='background:#e2e8f0; color:#334155; padding:2px 8px; border-radius:4px; font-size:11px; font-weight:600;'>{a}</span>"
|
| 108 |
+
for a in reqs.get("mandatory_articles", [])
|
| 109 |
+
])
|
| 110 |
+
|
| 111 |
+
# NIST tags
|
| 112 |
+
nist_html = " ".join([
|
| 113 |
+
f"<span style='background:#dbeafe; color:#1e40af; padding:2px 6px; border-radius:4px; font-size:11px; font-weight:500;'>{n}</span>"
|
| 114 |
+
for n in frameworks.get("nist_ai_rmf", [])
|
| 115 |
+
])
|
| 116 |
+
|
| 117 |
+
# ISO tags
|
| 118 |
+
iso_html = " ".join([
|
| 119 |
+
f"<span style='background:#f3e8ff; color:#6b21a8; padding:2px 6px; border-radius:4px; font-size:11px; font-weight:500;'>{i}</span>"
|
| 120 |
+
for i in frameworks.get("iso_42001", [])
|
| 121 |
+
])
|
| 122 |
+
|
| 123 |
+
# GDPR tags
|
| 124 |
+
gdpr_html = " ".join([
|
| 125 |
+
f"<span style='background:#e0e7ff; color:#3730a3; padding:2px 6px; border-radius:4px; font-size:11px; font-weight:500;'>{g}</span>"
|
| 126 |
+
for g in frameworks.get("gdpr", [])
|
| 127 |
+
])
|
| 128 |
+
|
| 129 |
+
html = f"""
|
| 130 |
+
<div style="background:#ffffff; border:1px solid #cbd5e1; border-radius:8px; padding:16px; margin-bottom:14px; box-shadow:0 1px 3px rgba(0,0,0,0.05); font-family:-apple-system,BlinkMacSystemFont,sans-serif;" class="factsheet-container">
|
| 131 |
+
<div style="display:flex; justify-content:space-between; align-items:flex-start; margin-bottom:10px; flex-wrap:wrap; gap:8px;">
|
| 132 |
+
<div>
|
| 133 |
+
<span style="background:#0284c7; color:#ffffff; padding:3px 10px; border-radius:12px; font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:0.5px;">
|
| 134 |
+
{case.get('domain_name', 'Domain')}
|
| 135 |
+
</span>
|
| 136 |
+
<h3 style="margin:6px 0 2px 0; font-size:16px; font-weight:700; color:#0f172a;">
|
| 137 |
+
{case.get('title')}
|
| 138 |
+
</h3>
|
| 139 |
+
<div style="font-size:12px; color:#64748b;">
|
| 140 |
+
<strong>Legal Basis:</strong> <span style="color:#2563eb;">{case.get('legal_basis')}</span>
|
| 141 |
+
</div>
|
| 142 |
+
</div>
|
| 143 |
+
<div>
|
| 144 |
+
<span style="background:{pill_bg}; color:{pill_color}; border:1px solid {pill_border}; padding:4px 12px; border-radius:6px; font-size:12px; font-weight:700;">
|
| 145 |
+
{expected}
|
| 146 |
+
</span>
|
| 147 |
+
</div>
|
| 148 |
+
</div>
|
| 149 |
+
|
| 150 |
+
<div style="background:#f8fafc; border-left:4px solid #3b82f6; padding:10px 12px; border-radius:4px; margin-bottom:12px; font-size:13px; color:#334155; line-height:1.5;">
|
| 151 |
+
<strong>🎯 Statutory Intended Purpose:</strong> {guidance.get('intended_purpose', '')}
|
| 152 |
+
</div>
|
| 153 |
+
|
| 154 |
+
<div style="display:grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap:12px; margin-bottom:12px;">
|
| 155 |
+
<div style="background:#f8fafc; border:1px solid #e2e8f0; border-radius:6px; padding:10px;">
|
| 156 |
+
<div style="font-size:11px; font-weight:700; color:#64748b; text-transform:uppercase; margin-bottom:4px;">Mandatory EU AI Act Requirements</div>
|
| 157 |
+
<div style="display:flex; flex-wrap:wrap; gap:4px; margin-top:4px;">{articles_html or 'N/A'}</div>
|
| 158 |
+
<div style="margin-top:8px; font-size:11px; color:#475569;">
|
| 159 |
+
<strong>Conformity Procedure:</strong> {reqs.get('conformity_procedure', 'N/A')}
|
| 160 |
+
</div>
|
| 161 |
+
<div style="margin-top:4px; font-size:11px; color:#b91c1c; font-weight:600;">
|
| 162 |
+
<strong>Statutory Fine Ceiling:</strong> {reqs.get('fine_exposure_tier', 'N/A')}
|
| 163 |
+
</div>
|
| 164 |
+
</div>
|
| 165 |
+
|
| 166 |
+
<div style="background:#f8fafc; border:1px solid #e2e8f0; border-radius:6px; padding:10px;">
|
| 167 |
+
<div style="font-size:11px; font-weight:700; color:#64748b; text-transform:uppercase; margin-bottom:4px;">Harmonized Framework Crosswalk</div>
|
| 168 |
+
<div style="margin-bottom:4px; font-size:11px;"><strong>NIST AI RMF:</strong> {nist_html or 'None'}</div>
|
| 169 |
+
<div style="margin-bottom:4px; font-size:11px;"><strong>ISO/IEC 42001:</strong> {iso_html or 'None'}</div>
|
| 170 |
+
<div style="font-size:11px;"><strong>GDPR:</strong> {gdpr_html or 'None'}</div>
|
| 171 |
+
</div>
|
| 172 |
+
</div>
|
| 173 |
+
|
| 174 |
+
<div style="background:#fffbeb; border:1px solid #fde68a; border-radius:6px; padding:10px 12px; margin-bottom:12px; font-size:12px; color:#92400e; line-height:1.5;">
|
| 175 |
+
<strong>⚠️ Auditor Pitfall & Common Failure Mode:</strong> {guidance.get('common_pitfalls', '')}
|
| 176 |
+
</div>
|
| 177 |
+
|
| 178 |
+
<!-- Cryptographic Provenance Block -->
|
| 179 |
+
<div style="background:#0f172a; color:#cbd5e1; border-radius:6px; padding:12px; font-size:11px; line-height:1.6;">
|
| 180 |
+
<div style="display:flex; justify-content:space-between; align-items:center; border-bottom:1px solid #334155; padding-bottom:6px; margin-bottom:6px;">
|
| 181 |
+
<span style="font-weight:700; color:#38bdf8; display:flex; align-items:center; gap:4px;">
|
| 182 |
+
🔐 Cryptographic Provenance & Legal Anchor (EUR-Lex)
|
| 183 |
+
</span>
|
| 184 |
+
<a href="{prov.get('eli_uri', 'http://data.europa.eu/eli/reg/2024/1689/oj')}" target="_blank" style="color:#60a5fa; text-decoration:none; font-weight:600;">
|
| 185 |
+
CELEX:{prov.get('celex', '32024R1689')} ↗
|
| 186 |
+
</a>
|
| 187 |
+
</div>
|
| 188 |
+
<div style="font-style:italic; color:#94a3b8; margin-bottom:6px; font-size:11px; border-left:2px solid #38bdf8; padding-left:8px;">
|
| 189 |
+
"{prov.get('statutory_quote', '')[:220]}..."
|
| 190 |
+
</div>
|
| 191 |
+
<div style="display:grid; grid-template-columns:1fr 1fr; gap:6px; font-family:monospace; font-size:10px;">
|
| 192 |
+
<div><span style="color:#64748b;">Statutory Quote SHA-256:</span> <span style="color:#a7f3d0;">{prov.get('statutory_quote_sha256', '')[:16]}...</span></div>
|
| 193 |
+
<div><span style="color:#64748b;">Model Spec SHA-256:</span> <span style="color:#a7f3d0;">{prov.get('spec_file_sha256', '')[:16]}...</span></div>
|
| 194 |
+
<div style="grid-column: span 2;"><span style="color:#64748b;">W3C PROV-O Entity:</span> <span style="color:#bae6fd;">{prov.get('prov_o_entity', '')}</span></div>
|
| 195 |
+
</div>
|
| 196 |
+
</div>
|
| 197 |
+
</div>
|
| 198 |
+
"""
|
| 199 |
+
return html
|
src/extraction/parser.py
CHANGED
|
@@ -77,20 +77,52 @@ class SpecificationParser:
|
|
| 77 |
name_match = re.search(r"^#\s+(.+)$", raw_markdown, re.MULTILINE)
|
| 78 |
name = name_match.group(1).strip() if name_match else default_id.replace("-", " ").title()
|
| 79 |
|
| 80 |
-
|
| 81 |
-
|
|
|
|
| 82 |
domain = "Healthcare & Medical Diagnostics"
|
| 83 |
-
elif re.search(r"\b(recruitment|employment|cv|resume|interview)\b", raw_markdown, re.I):
|
| 84 |
domain = "Employment & HR Screening"
|
| 85 |
-
elif re.search(r"\b(credit|loan|financial|underwriting)\b", raw_markdown, re.I):
|
| 86 |
domain = "Financial Services & Credit Scoring"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 87 |
|
| 88 |
metadata = SystemMetadata(
|
| 89 |
system_id=default_id,
|
| 90 |
name=name,
|
| 91 |
domain=domain,
|
| 92 |
intended_purpose="Automated processing and evaluation in high-impact workflows.",
|
| 93 |
-
eu_risk_classification=
|
| 94 |
)
|
| 95 |
|
| 96 |
return SystemSpecification(
|
|
|
|
| 77 |
name_match = re.search(r"^#\s+(.+)$", raw_markdown, re.MULTILINE)
|
| 78 |
name = name_match.group(1).strip() if name_match else default_id.replace("-", " ").title()
|
| 79 |
|
| 80 |
+
# Dynamic Domain Detection
|
| 81 |
+
domain = "High-Risk AI System"
|
| 82 |
+
if re.search(r"\b(medical|clinical|diagnostic|radiology|samd|oncology)\b", raw_markdown, re.I):
|
| 83 |
domain = "Healthcare & Medical Diagnostics"
|
| 84 |
+
elif re.search(r"\b(recruitment|employment|cv|resume|interview|workplace)\b", raw_markdown, re.I):
|
| 85 |
domain = "Employment & HR Screening"
|
| 86 |
+
elif re.search(r"\b(credit|loan|financial|underwriting|banking)\b", raw_markdown, re.I):
|
| 87 |
domain = "Financial Services & Credit Scoring"
|
| 88 |
+
elif re.search(r"\b(automotive|transport|braking|vehicle)\b", raw_markdown, re.I):
|
| 89 |
+
domain = "Automotive & Road Transport Safety"
|
| 90 |
+
elif re.search(r"\b(grid|electricity|energy|critical infrastructure|scada)\b", raw_markdown, re.I):
|
| 91 |
+
domain = "Critical Infrastructure & Energy Management"
|
| 92 |
+
elif re.search(r"\b(education|proctoring|exam|student|cheating)\b", raw_markdown, re.I):
|
| 93 |
+
domain = "Education & Vocational Training"
|
| 94 |
+
elif re.search(r"\b(justice|recidivism|court|bail|law enforcement)\b", raw_markdown, re.I):
|
| 95 |
+
domain = "Law Enforcement & Criminal Justice"
|
| 96 |
+
elif re.search(r"\b(gpai|frontier|foundation model|llm)\b", raw_markdown, re.I):
|
| 97 |
+
domain = "General Purpose AI & Frontier Models"
|
| 98 |
+
elif re.search(r"\b(social scoring|trustworthiness|civic score)\b", raw_markdown, re.I):
|
| 99 |
+
domain = "Public Administration & Civic Scoring"
|
| 100 |
+
elif re.search(r"\b(chatbot|conversational|support agent)\b", raw_markdown, re.I):
|
| 101 |
+
domain = "Customer Support & Conversational AI"
|
| 102 |
+
elif re.search(r"\b(spam|phishing|email security)\b", raw_markdown, re.I):
|
| 103 |
+
domain = "Enterprise Cybersecurity & Email Management"
|
| 104 |
+
|
| 105 |
+
# Dynamic Statutory Risk Classification
|
| 106 |
+
risk_class = "High-Risk (Annex III)"
|
| 107 |
+
if re.search(r"\b(prohibited|social scoring|emotion recognition|article 5\b)", raw_markdown, re.I):
|
| 108 |
+
risk_class = "Prohibited (Article 5)"
|
| 109 |
+
elif re.search(r"\b(systemic risk|article 51|10\^25|frontier foundation)\b", raw_markdown, re.I):
|
| 110 |
+
risk_class = "GPAI with Systemic Risk (Article 51)"
|
| 111 |
+
elif re.search(r"\b(general purpose|gpai|article 53)\b", raw_markdown, re.I):
|
| 112 |
+
risk_class = "GPAI Model (Article 53)"
|
| 113 |
+
elif re.search(r"\b(limited risk|article 50|transparency obligations)\b", raw_markdown, re.I):
|
| 114 |
+
risk_class = "Limited Risk (Article 50)"
|
| 115 |
+
elif re.search(r"\b(minimal risk|voluntary codes? of conduct)\b", raw_markdown, re.I):
|
| 116 |
+
risk_class = "Minimal / No Statutory Risk"
|
| 117 |
+
elif re.search(r"\b(annex i|automotive safety component|article 6\(1\)|medical device|mdr)\b", raw_markdown, re.I):
|
| 118 |
+
risk_class = "High-Risk (Annex I / Article 6(1))"
|
| 119 |
|
| 120 |
metadata = SystemMetadata(
|
| 121 |
system_id=default_id,
|
| 122 |
name=name,
|
| 123 |
domain=domain,
|
| 124 |
intended_purpose="Automated processing and evaluation in high-impact workflows.",
|
| 125 |
+
eu_risk_classification=risk_class,
|
| 126 |
)
|
| 127 |
|
| 128 |
return SystemSpecification(
|
src/reasoning/shacl_engine.py
CHANGED
|
@@ -51,13 +51,26 @@ class DeterministicSHACLEngine:
|
|
| 51 |
debug=False,
|
| 52 |
)
|
| 53 |
violations, warnings = self._parse_shacl_report(report_graph)
|
|
|
|
|
|
|
| 54 |
except ImportError:
|
| 55 |
# Fallback deterministic rule validator if PySHACL is not installed in runtime
|
| 56 |
conforms, violations, warnings = self._fallback_deterministic_validation(system_graph)
|
| 57 |
|
| 58 |
total_rules = max(1, len(violations) + len(warnings) + 5)
|
| 59 |
passed_rules = max(0, total_rules - len(violations))
|
| 60 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 61 |
|
| 62 |
return conforms, violations, warnings, conformity_score
|
| 63 |
|
|
|
|
| 51 |
debug=False,
|
| 52 |
)
|
| 53 |
violations, warnings = self._parse_shacl_report(report_graph)
|
| 54 |
+
# In W3C SHACL, warnings do not break conformity; only sh:Violation breaks conformity
|
| 55 |
+
conforms = len(violations) == 0
|
| 56 |
except ImportError:
|
| 57 |
# Fallback deterministic rule validator if PySHACL is not installed in runtime
|
| 58 |
conforms, violations, warnings = self._fallback_deterministic_validation(system_graph)
|
| 59 |
|
| 60 |
total_rules = max(1, len(violations) + len(warnings) + 5)
|
| 61 |
passed_rules = max(0, total_rules - len(violations))
|
| 62 |
+
|
| 63 |
+
# Article 5 Prohibited AI practices are fatal violations that yield 0.0% conformity score
|
| 64 |
+
has_prohibited_violation = any(
|
| 65 |
+
"Article 5" in v.regulatory_article or "prohibited" in v.message.lower()
|
| 66 |
+
for v in violations
|
| 67 |
+
)
|
| 68 |
+
if has_prohibited_violation:
|
| 69 |
+
conformity_score = 0.0
|
| 70 |
+
elif conforms:
|
| 71 |
+
conformity_score = 100.0
|
| 72 |
+
else:
|
| 73 |
+
conformity_score = round((passed_rules / total_rules) * 100.0, 1)
|
| 74 |
|
| 75 |
return conforms, violations, warnings, conformity_score
|
| 76 |
|
tests/test_api.py
CHANGED
|
@@ -94,3 +94,29 @@ def test_api_triage_feedback():
|
|
| 94 |
data = response.json()
|
| 95 |
assert data["status"] == "RECORDED"
|
| 96 |
assert "positive_label" in data["triplet"]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 94 |
data = response.json()
|
| 95 |
assert data["status"] == "RECORDED"
|
| 96 |
assert "positive_label" in data["triplet"]
|
| 97 |
+
|
| 98 |
+
|
| 99 |
+
def test_api_benchmark_catalog():
|
| 100 |
+
response = client.get("/api/v1/benchmarks/catalog")
|
| 101 |
+
assert response.status_code == 200
|
| 102 |
+
data = response.json()
|
| 103 |
+
assert "domains" in data
|
| 104 |
+
assert len(data["domains"]) >= 10
|
| 105 |
+
assert data["celex"] == "32024R1689"
|
| 106 |
+
|
| 107 |
+
# Test domain filtering query
|
| 108 |
+
filtered = client.get("/api/v1/benchmarks/catalog?domain=healthcare_samd")
|
| 109 |
+
assert filtered.status_code == 200
|
| 110 |
+
f_data = filtered.json()
|
| 111 |
+
assert f_data["total_cases"] >= 1
|
| 112 |
+
assert any("SaMD" in c["title"] for c in f_data["case_studies"])
|
| 113 |
+
|
| 114 |
+
|
| 115 |
+
def test_api_benchmark_case():
|
| 116 |
+
response = client.get("/api/v1/benchmarks/cases/compliant_clinical_samd")
|
| 117 |
+
assert response.status_code == 200
|
| 118 |
+
data = response.json()
|
| 119 |
+
assert "case_metadata" in data
|
| 120 |
+
assert "raw_specification_text" in data
|
| 121 |
+
assert data["case_metadata"]["provenance"]["celex"] == "32024R1689"
|
| 122 |
+
assert "spec_file_sha256" in data["case_metadata"]["provenance"]
|
tests/test_case_catalog.py
ADDED
|
@@ -0,0 +1,112 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""
|
| 2 |
+
Tests for Domain-Driven Case Study Catalog and Cryptographic Provenance Anchors.
|
| 3 |
+
"""
|
| 4 |
+
|
| 5 |
+
import hashlib
|
| 6 |
+
import json
|
| 7 |
+
from pathlib import Path
|
| 8 |
+
import pytest
|
| 9 |
+
|
| 10 |
+
from src.core.config import PROJECT_ROOT, BENCHMARKS_DIR
|
| 11 |
+
from src.core.case_catalog import CaseStudyCatalog
|
| 12 |
+
from src.engine import ReguAIEngine
|
| 13 |
+
|
| 14 |
+
|
| 15 |
+
@pytest.fixture
|
| 16 |
+
def catalog():
|
| 17 |
+
return CaseStudyCatalog()
|
| 18 |
+
|
| 19 |
+
|
| 20 |
+
@pytest.fixture
|
| 21 |
+
def engine():
|
| 22 |
+
return ReguAIEngine()
|
| 23 |
+
|
| 24 |
+
|
| 25 |
+
def test_catalog_structure_and_domains(catalog):
|
| 26 |
+
domains = catalog.list_domains()
|
| 27 |
+
assert len(domains) == 11
|
| 28 |
+
domain_ids = [d["domain_id"] for d in domains]
|
| 29 |
+
assert "healthcare_samd" in domain_ids
|
| 30 |
+
assert "employment_hr" in domain_ids
|
| 31 |
+
assert "banking_finance" in domain_ids
|
| 32 |
+
assert "transport_safety" in domain_ids
|
| 33 |
+
assert "critical_infrastructure" in domain_ids
|
| 34 |
+
assert "education_training" in domain_ids
|
| 35 |
+
assert "justice_law_enforcement" in domain_ids
|
| 36 |
+
assert "frontier_gpai" in domain_ids
|
| 37 |
+
assert "prohibited_practices" in domain_ids
|
| 38 |
+
assert "limited_risk_generative" in domain_ids
|
| 39 |
+
assert "minimal_risk" in domain_ids
|
| 40 |
+
|
| 41 |
+
|
| 42 |
+
def test_cryptographic_provenance_integrity(catalog):
|
| 43 |
+
"""
|
| 44 |
+
Cryptographic verification: Recomputes SHA-256 digests of all specification
|
| 45 |
+
files and statutory text excerpts and asserts exact parity with catalog ledger.
|
| 46 |
+
"""
|
| 47 |
+
for domain in catalog.list_domains():
|
| 48 |
+
for case in domain["case_studies"]:
|
| 49 |
+
file_path = PROJECT_ROOT / case["file_path"]
|
| 50 |
+
assert file_path.exists(), f"File missing: {file_path}"
|
| 51 |
+
|
| 52 |
+
# 1. Spec file SHA-256 verification
|
| 53 |
+
computed_file_hash = hashlib.sha256(file_path.read_bytes()).hexdigest()
|
| 54 |
+
assert case["file_sha256"] == computed_file_hash
|
| 55 |
+
assert case["provenance"]["spec_file_sha256"] == computed_file_hash
|
| 56 |
+
|
| 57 |
+
# 2. Statutory quote SHA-256 verification
|
| 58 |
+
quote = case["statutory_quote"]
|
| 59 |
+
computed_quote_hash = hashlib.sha256(quote.encode("utf-8")).hexdigest()
|
| 60 |
+
assert case["provenance"]["statutory_quote_sha256"] == computed_quote_hash
|
| 61 |
+
|
| 62 |
+
# 3. Provenance anchor metadata
|
| 63 |
+
assert case["provenance"]["celex"] == "32024R1689"
|
| 64 |
+
assert "eli_uri" in case["provenance"]
|
| 65 |
+
assert case["provenance"]["prov_o_entity"].startswith("urn:reguai:benchmark:case:")
|
| 66 |
+
|
| 67 |
+
|
| 68 |
+
def test_render_factsheet_html(catalog):
|
| 69 |
+
case = catalog.get_case("transport_autonomous_braking")
|
| 70 |
+
assert case is not None
|
| 71 |
+
html = catalog.render_factsheet_html("transport_autonomous_braking")
|
| 72 |
+
assert "AutoDrive SafeStop" in html
|
| 73 |
+
assert "CELEX:32024R1689" in html
|
| 74 |
+
assert "Statutory Quote SHA-256" in html
|
| 75 |
+
assert "Model Spec SHA-256" in html
|
| 76 |
+
assert "W3C PROV-O Entity" in html
|
| 77 |
+
|
| 78 |
+
|
| 79 |
+
def test_transport_safety_conforms(engine, catalog):
|
| 80 |
+
doc_text = catalog.get_case_document_text("transport_autonomous_braking")
|
| 81 |
+
assert len(doc_text) > 0
|
| 82 |
+
report = engine.evaluate_system(doc_text)
|
| 83 |
+
assert report.overall_conforms is True
|
| 84 |
+
assert report.conformity_score == 100.0
|
| 85 |
+
|
| 86 |
+
|
| 87 |
+
def test_education_surveillance_fails(engine, catalog):
|
| 88 |
+
doc_text = catalog.get_case_document_text("education_remote_proctoring")
|
| 89 |
+
assert len(doc_text) > 0
|
| 90 |
+
report = engine.evaluate_system(doc_text)
|
| 91 |
+
assert report.overall_conforms is False
|
| 92 |
+
assert len(report.violations) > 0
|
| 93 |
+
# Must fail Article 14 (oversight) and Article 10(2)(f) (bias)
|
| 94 |
+
violated_articles = [v.regulatory_article for v in report.violations]
|
| 95 |
+
assert any("14" in art for art in violated_articles)
|
| 96 |
+
assert any("10" in art for art in violated_articles)
|
| 97 |
+
|
| 98 |
+
|
| 99 |
+
def test_prohibited_social_scoring_fails_with_tier_1_fine(engine, catalog):
|
| 100 |
+
doc_text = catalog.get_case_document_text("prohibited_social_scoring")
|
| 101 |
+
assert len(doc_text) > 0
|
| 102 |
+
report = engine.evaluate_system(doc_text, annual_turnover_eur=100_000_000.0)
|
| 103 |
+
assert report.overall_conforms is False
|
| 104 |
+
assert report.conformity_score == 0.0
|
| 105 |
+
assert report.fine_exposure is not None
|
| 106 |
+
# fine_exposure is stored as a dict in ConformityReport
|
| 107 |
+
if isinstance(report.fine_exposure, dict):
|
| 108 |
+
assert report.fine_exposure["highest_tier_triggered"] == "TIER_1_PROHIBITED_AI"
|
| 109 |
+
assert report.fine_exposure["applicable_ceiling_eur"] == 35_000_000.0
|
| 110 |
+
else:
|
| 111 |
+
assert report.fine_exposure.highest_tier_triggered == "TIER_1_PROHIBITED_AI"
|
| 112 |
+
assert report.fine_exposure.applicable_ceiling_eur == 35_000_000.0
|