-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathferpa-config.yaml
More file actions
82 lines (70 loc) · 2.54 KB
/
Copy pathferpa-config.yaml
File metadata and controls
82 lines (70 loc) · 2.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# FERPA audit configuration (repository root)
# Referenced by .claude/skills/ferpa-audit/scripts/* — keep stable keys for hash comparisons across runs.
version: 1
project:
dashboard_relative_path: codebenders-dashboard
analyze_route_glob: codebenders-dashboard/app/api/analyze/route.ts
execute_sql_route_glob: codebenders-dashboard/app/api/execute-sql/route.ts
ai_transparency_file: codebenders-dashboard/content/ai-transparency.ts
query_executor_file: codebenders-dashboard/lib/query-executor.ts
config_file: codebenders-dashboard/lib/config.ts
# Columns that must not appear in SELECT lists, API JSON shapes, exports, or logs
# without an explicit same-line annotation: // FERPA-OK: <reason>
select_exclusions:
- Student_GUID
- student_guid
# Demographic fields — raw values in small cells heighten re-identification risk (Layer B)
sensitive_demographics:
- Race
- Gender
subpopulation_minimum_n: 10
# Postgres (Layer B) — override with DB_* env vars; see operations/db_config.py
database:
schema: public
predictions_table: student_level_with_predictions
small_n_dimensions:
- '"Race"'
- '"Gender"'
- '"Cohort"'
# Third-party / non-institutional hosts (Layer A fetch classification)
external_data_hosts:
- hostname: schools.syntex-ai.com
note: "Analysis-ready student-row API; must be blocked when FORCE_DIRECT_DB=true"
allowlisted_external_hosts:
- api.openai.com
- api.anthropic.com
rbac:
header_name: x-user-role
# API routes (relative to dashboard) that return student-level or row-level education data
# and must enforce the role header per institutional policy.
# execute-sql and analyze are covered by dedicated Layer A checks (FERPA guard + vendor prompt).
student_data_routes:
- app/api/students/route.ts
- app/api/students/[guid]/route.ts
- app/api/dashboard/kpis/route.ts
- app/api/dashboard/readiness/route.ts
- app/api/dashboard/retention-risk/route.ts
- app/api/dashboard/risk-alerts/route.ts
- app/api/query-history/route.ts
taxonomy:
pii_column_substrings:
- GUID
- SSN
- social
- birth
- email
educational_record_tables:
- student_level_with_predictions
- course_enrollments
- student_predictions
- course_predictions
audit_log:
# When set, Layer B will check for this table; if missing, emit informational Note only.
table_name: null
llm:
# Files that must stay aligned with ferpaExcluded in analyze_route (regex extract in Layer A)
sdk_markers:
- "@ai-sdk/openai"
- "createOpenAI"
- "streamObject"
- "generateText"