reguai-engine / src /core /models.py
gitmodelmujtaba's picture
Deploy ReguAI: Neuro-Symbolic AI GRC & Automated Conformity Assessment Engine
99102a1 verified
Raw
History Blame Contribute Delete
3.5 kB
"""
Pydantic schemas for ReguAI system models, claims, verification results, and audit ledger.
"""
from __future__ import annotations
from enum import Enum
from typing import List, Optional, Dict, Any
from pydantic import BaseModel, Field
class AssertionStatus(str, Enum):
IMPLEMENTED = "IMPLEMENTED"
PLANNED = "PLANNED"
ABSENT = "ABSENT"
UNKNOWN = "UNKNOWN"
class RegulatoryFramework(str, Enum):
EU_AI_ACT = "EU_AI_ACT"
NIST_AI_RMF = "NIST_AI_RMF"
ISO_42001 = "ISO_42001"
class EntityCategory(str, Enum):
RISK_MANAGEMENT = "RISK_MANAGEMENT" # Art 9 / NIST GOVERN
DATA_GOVERNANCE = "DATA_GOVERNANCE" # Art 10 / NIST MAP
BIAS_MITIGATION = "BIAS_MITIGATION" # Art 10(2)(f) / NIST MEASURE
TECHNICAL_DOCUMENTATION = "TECHNICAL_DOCUMENTATION" # Art 11 & Annex IV
RECORD_KEEPING = "RECORD_KEEPING" # Art 12 / Logging
TRANSPARENCY = "TRANSPARENCY" # Art 13
HUMAN_OVERSIGHT = "HUMAN_OVERSIGHT" # Art 14 / Human-in-the-loop
ACCURACY_ROBUSTNESS = "ACCURACY_ROBUSTNESS" # Art 15(1)
CYBERSECURITY = "CYBERSECURITY" # Art 15(4)
FAIL_SAFE = "FAIL_SAFE" # Art 14(4)(e) / Art 15
class ExtractedClaim(BaseModel):
claim_id: str
entity_text: str
category: EntityCategory
assertion_status: AssertionStatus
confidence: float = Field(ge=0.0, le=1.0)
source_span: Optional[tuple[int, int]] = None
normative_article: str
evidence_quote: str
requires_auditor_review: bool = False
auditor_verified: Optional[bool] = None
auditor_notes: Optional[str] = None
class SystemMetadata(BaseModel):
system_id: str
name: str
version: str = "1.0.0"
domain: str
intended_purpose: str
eu_risk_classification: str = "High-Risk (Annex III)"
developer_name: str = "Enterprise AI Labs"
deployment_context: str = "Production"
class SystemSpecification(BaseModel):
metadata: SystemMetadata
raw_document_text: str
extracted_claims: List[ExtractedClaim] = Field(default_factory=list)
custom_attributes: Dict[str, Any] = Field(default_factory=dict)
class ValidationViolation(BaseModel):
focus_node: str
result_path: str
source_constraint_component: str
message: str
severity: str = "Violation" # Violation, Warning, Info
regulatory_article: str
normative_reference: str
remediation_guidance: str
class AuditProvenance(BaseModel):
input_doc_sha256: str
graph_triples_sha256: str
ruleset_sha256: str
certificate_sha256: str
prov_o_rdf: str
timestamp_utc: str
digital_signature: str
class ConformityReport(BaseModel):
report_id: str
system_metadata: SystemMetadata
overall_conforms: bool
conformity_score: float = Field(ge=0.0, le=100.0)
total_requirements_evaluated: int
passed_requirements_count: int
violations: List[ValidationViolation] = Field(default_factory=list)
warnings: List[ValidationViolation] = Field(default_factory=list)
claims_analyzed: List[ExtractedClaim] = Field(default_factory=list)
borderline_claims: List[ExtractedClaim] = Field(default_factory=list)
provenance: AuditProvenance
generated_at_utc: str
executive_summary: str
fine_exposure: Optional[Dict[str, Any]] = None
harmonized_frameworks: Optional[Dict[str, Any]] = None