from attesta.domains import (
DomainProfile,
DomainRegistry,
RiskPattern,
EscalationRule,
DomainChallengeTemplate,
)
education_profile = DomainProfile(
name="education",
display_name="Education (FERPA)",
description="FERPA/COPPA compliance profile for educational AI agents",
# ── Risk Patterns ──────────────────────────────────────────
risk_patterns=[
RiskPattern(
pattern=r"student_id|student_record|transcript|gpa",
target="args",
risk_contribution=0.8,
name="student_identifiers",
description="Student PII in function arguments",
compliance_refs=["FERPA §99.3"],
),
RiskPattern(
pattern=r"access_student_record|modify_grade|update_transcript",
target="function_name",
risk_contribution=0.85,
name="student_record_operations",
description="Operations on education records",
compliance_refs=["FERPA §99.10"],
),
RiskPattern(
pattern=r"parent_consent|guardian_approval",
target="any",
risk_contribution=0.7,
name="consent_operations",
description="Parental consent for minors",
compliance_refs=["COPPA §312.5"],
),
RiskPattern(
pattern=r"share_with_third_party|directory_information",
target="function_name",
risk_contribution=0.75,
name="third_party_disclosure",
description="Sharing education records externally",
compliance_refs=["FERPA §99.31"],
),
RiskPattern(
pattern=r"disciplinary|behavioral|special_education|iep",
target="any",
risk_contribution=0.85,
name="sensitive_education_records",
description="Sensitive student records",
compliance_refs=["FERPA §99.31", "IDEA"],
),
RiskPattern(
pattern=r"child_under_13|minor|age_verification",
target="any",
risk_contribution=0.9,
name="minor_data",
description="Data involving minors under 13",
compliance_refs=["COPPA §312.3"],
),
],
# ── Sensitive Terms ────────────────────────────────────────
sensitive_terms={
"student": 0.80,
"transcript": 0.85,
"grade": 0.75,
"ferpa": 0.90,
"minor": 0.90,
"guardian": 0.70,
"enrollment": 0.60,
"discipline": 0.80,
"iep": 0.85,
},
# ── Critical Actions ───────────────────────────────────────
critical_actions=[
"delete_student_record",
"export_student_data",
"share_records_externally",
"modify_grade_permanent",
"override_consent_requirement",
"bulk_student_export",
],
# ── Safe Actions ───────────────────────────────────────────
safe_actions=[
"get_enrollment_count",
"list_course_catalog",
"check_system_status",
],
# ── Compliance Frameworks ──────────────────────────────────
compliance_frameworks=["FERPA", "COPPA", "IDEA", "Title IX"],
# ── Escalation Rules ───────────────────────────────────────
escalation_rules=[
EscalationRule(
condition="bulk_student_export",
action="multi_party",
required_approvers=3,
notify_roles=["registrar", "ferpa_officer"],
description="Bulk student data export requires 3-party approval",
),
EscalationRule(
condition="minor_data_processing",
action="teach_back",
required_approvers=2,
notify_roles=["privacy_officer", "school_admin"],
description="Processing data of minors under 13 requires teach-back",
),
EscalationRule(
condition="grade_modification",
action="multi_party",
required_approvers=2,
notify_roles=["department_chair", "registrar"],
description="Grade changes require dual approval",
),
],
# ── Challenge Templates ────────────────────────────────────
challenge_templates=[
DomainChallengeTemplate(
question_template="Under FERPA, what must be obtained before disclosing {record_type} to a third party?",
answer_hints=["written consent", "parent", "eligible student", "directory"],
context_vars=["record_type"],
challenge_type="teach_back",
min_risk_level="high",
),
DomainChallengeTemplate(
question_template="What age threshold triggers COPPA requirements for this operation?",
answer_hints=["13", "under 13", "minor", "parental consent"],
context_vars=[],
challenge_type="teach_back",
min_risk_level="high",
),
],
# ── Review Time Overrides ──────────────────────────────────
min_review_overrides={
"critical": 45,
"high": 15,
},
# ── Risk Floor and Production Multiplier ───────────────────
base_risk_floor=0.12,
production_multiplier=1.5,
# ── Required Vocabulary ────────────────────────────────────
required_vocabulary=[
"FERPA", "education records", "directory information",
"legitimate educational interest", "eligible student",
],
)