acf-mcp 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +87 -0
- package/content/fiches/.gitkeep +0 -0
- package/content/fiches/ACF-00.en.md +59 -0
- package/content/fiches/ACF-00.fr.md +59 -0
- package/content/fiches/ACF-01.en.md +32 -0
- package/content/fiches/ACF-01.fr.md +32 -0
- package/content/fiches/ACF-02.en.md +32 -0
- package/content/fiches/ACF-02.fr.md +32 -0
- package/content/fiches/ACF-03.en.md +78 -0
- package/content/fiches/ACF-03.fr.md +78 -0
- package/content/fiches/ACF-04.en.md +32 -0
- package/content/fiches/ACF-04.fr.md +32 -0
- package/content/fiches/ACF-05.en.md +32 -0
- package/content/fiches/ACF-05.fr.md +32 -0
- package/content/fiches/ACF-06.en.md +32 -0
- package/content/fiches/ACF-06.fr.md +32 -0
- package/content/fiches/ACF-07.en.md +32 -0
- package/content/fiches/ACF-07.fr.md +32 -0
- package/content/fiches/ACF-08.en.md +32 -0
- package/content/fiches/ACF-08.fr.md +32 -0
- package/content/fiches/ACF-09.en.md +32 -0
- package/content/fiches/ACF-09.fr.md +32 -0
- package/content/fiches/ACF-10.en.md +32 -0
- package/content/fiches/ACF-10.fr.md +32 -0
- package/content/fiches/ACF-11.en.md +32 -0
- package/content/fiches/ACF-11.fr.md +32 -0
- package/content/fiches/ACF-12.en.md +32 -0
- package/content/fiches/ACF-12.fr.md +32 -0
- package/content/fiches/ACF-13.en.md +32 -0
- package/content/fiches/ACF-13.fr.md +32 -0
- package/content/fiches/ACF-14.en.md +32 -0
- package/content/fiches/ACF-14.fr.md +32 -0
- package/content/fiches/ACF-15.en.md +32 -0
- package/content/fiches/ACF-15.fr.md +32 -0
- package/content/fiches/ACF-16.en.md +32 -0
- package/content/fiches/ACF-16.fr.md +32 -0
- package/content/framework/.gitkeep +0 -0
- package/content/framework/autonomy-levels.json +73 -0
- package/content/framework/ddao.json +16 -0
- package/content/framework/dimensions.json +83 -0
- package/content/framework/principles.json +77 -0
- package/content/glossary/.gitkeep +0 -0
- package/content/glossary/en.json +96 -0
- package/content/glossary/fr.json +96 -0
- package/content/guides/.gitkeep +0 -0
- package/content/manual/.gitkeep +0 -0
- package/content/meta.json +23 -0
- package/content/rules/.gitkeep +0 -0
- package/content/rules/ai-act-annex-i.json +54 -0
- package/content/rules/ai-act-annex-iii.json +165 -0
- package/content/rules/ai-act-roles.json +52 -0
- package/content/rules/autonomy-inference.json +38 -0
- package/content/rules/criticality-matrix.json +83 -0
- package/content/rules/ddao-controls-mapping.json +148 -0
- package/content/rules/gdpr-qualification.json +58 -0
- package/content/rules/gpai-triggers.json +41 -0
- package/content/rules/rules-meta.json +5 -0
- package/content/rules/sign-off-matrix.json +84 -0
- package/content/whitepaper/.gitkeep +0 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.js +2898 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/rate-limit.d.ts +24 -0
- package/dist/lib/rate-limit.js +89 -0
- package/dist/lib/rate-limit.js.map +1 -0
- package/dist/search-index.json +1 -0
- package/dist/server-DxztThU5.d.ts +931 -0
- package/dist/transport/http.d.ts +27 -0
- package/dist/transport/http.js +2908 -0
- package/dist/transport/http.js.map +1 -0
- package/dist/transport/stdio.d.ts +1 -0
- package/dist/transport/stdio.js +2907 -0
- package/dist/transport/stdio.js.map +1 -0
- package/package.json +81 -0
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "2026-06",
|
|
3
|
+
"last_update": "2026-06-07",
|
|
4
|
+
"applicable_dates": [
|
|
5
|
+
{ "category": "annex-iii", "applicable_from": "2027-12-02", "deferred": true }
|
|
6
|
+
],
|
|
7
|
+
"categories": [
|
|
8
|
+
{
|
|
9
|
+
"id": "annex-iii-1a-biometric-identity",
|
|
10
|
+
"title": "Remote biometric identification (Annex III item 1a)",
|
|
11
|
+
"triggers": {
|
|
12
|
+
"keyword_patterns": [
|
|
13
|
+
"facial recognition", "reconnaissance faciale", "biometric identification",
|
|
14
|
+
"identification biométrique", "real-time biometric", "biométrie temps réel"
|
|
15
|
+
],
|
|
16
|
+
"enum_match": {
|
|
17
|
+
"ai_act_triggers": ["biometric_identity"],
|
|
18
|
+
"personal_data_level": ["sensitive_special"]
|
|
19
|
+
},
|
|
20
|
+
"negation_aware": true
|
|
21
|
+
},
|
|
22
|
+
"obligations": ["art-5", "art-9", "art-10", "art-11", "art-12", "art-13", "art-14", "art-15", "art-26", "art-27"],
|
|
23
|
+
"fiches": ["ACF-02", "ACF-09", "ACF-11"],
|
|
24
|
+
"confidence_base": "high",
|
|
25
|
+
"requires_human_review": true
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"id": "annex-iii-2-critical-infrastructure",
|
|
29
|
+
"title": "Critical infrastructure (Annex III item 2)",
|
|
30
|
+
"triggers": {
|
|
31
|
+
"keyword_patterns": [
|
|
32
|
+
"energy grid", "réseau énergétique", "water supply", "approvisionnement en eau",
|
|
33
|
+
"gas distribution", "distribution gaz", "critical infrastructure", "infrastructure critique"
|
|
34
|
+
],
|
|
35
|
+
"enum_match": { "ai_act_triggers": ["critical_infrastructure"] },
|
|
36
|
+
"negation_aware": true
|
|
37
|
+
},
|
|
38
|
+
"obligations": ["art-9", "art-10", "art-11", "art-12", "art-13", "art-14", "art-15"],
|
|
39
|
+
"fiches": ["ACF-02", "ACF-07", "ACF-09", "ACF-11"],
|
|
40
|
+
"confidence_base": "high",
|
|
41
|
+
"requires_human_review": true
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"id": "annex-iii-3-educational",
|
|
45
|
+
"title": "Education and vocational training (Annex III item 3)",
|
|
46
|
+
"triggers": {
|
|
47
|
+
"keyword_patterns": [
|
|
48
|
+
"grading", "notation", "admission", "student assessment", "évaluation étudiant",
|
|
49
|
+
"school admission", "examen", "exam scoring"
|
|
50
|
+
],
|
|
51
|
+
"enum_match": {
|
|
52
|
+
"ai_act_triggers": ["educational_assessment"],
|
|
53
|
+
"processing_purposes": ["education"]
|
|
54
|
+
},
|
|
55
|
+
"negation_aware": true
|
|
56
|
+
},
|
|
57
|
+
"obligations": ["art-9", "art-10", "art-11", "art-12", "art-13", "art-14", "art-15"],
|
|
58
|
+
"fiches": ["ACF-02", "ACF-09", "ACF-11"],
|
|
59
|
+
"confidence_base": "high",
|
|
60
|
+
"requires_human_review": true
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"id": "annex-iii-4-employment",
|
|
64
|
+
"title": "Employment, workers management, access to self-employment (Annex III item 4)",
|
|
65
|
+
"triggers": {
|
|
66
|
+
"keyword_patterns": [
|
|
67
|
+
"recruitment", "recrutement", "hiring", "embauche", "cv screening",
|
|
68
|
+
"filtrage cv", "performance review", "évaluation salarié", "promotion"
|
|
69
|
+
],
|
|
70
|
+
"enum_match": {
|
|
71
|
+
"ai_act_triggers": ["employment_recruitment"],
|
|
72
|
+
"processing_purposes": ["hr"]
|
|
73
|
+
},
|
|
74
|
+
"negation_aware": true
|
|
75
|
+
},
|
|
76
|
+
"obligations": ["art-9", "art-10", "art-11", "art-12", "art-13", "art-14", "art-15"],
|
|
77
|
+
"fiches": ["ACF-02", "ACF-09", "ACF-11"],
|
|
78
|
+
"confidence_base": "high",
|
|
79
|
+
"requires_human_review": true
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"id": "annex-iii-5b-credit-scoring",
|
|
83
|
+
"title": "Credit scoring (Annex III item 5b)",
|
|
84
|
+
"triggers": {
|
|
85
|
+
"keyword_patterns": [
|
|
86
|
+
"credit", "scoring", "loan", "prêt", "lending", "octroi de crédit",
|
|
87
|
+
"credit decision", "décision crédit", "creditworthiness", "solvabilité"
|
|
88
|
+
],
|
|
89
|
+
"structured_flags": ["financial_exposure:high_corporate"],
|
|
90
|
+
"enum_match": {
|
|
91
|
+
"ai_act_triggers": ["credit_scoring"],
|
|
92
|
+
"processing_purposes": ["core_financial"]
|
|
93
|
+
},
|
|
94
|
+
"negation_aware": true
|
|
95
|
+
},
|
|
96
|
+
"obligations": ["art-9", "art-10", "art-11", "art-12", "art-13", "art-14", "art-15", "art-86"],
|
|
97
|
+
"fiches": ["ACF-02", "ACF-09", "ACF-10", "ACF-11"],
|
|
98
|
+
"confidence_base": "high",
|
|
99
|
+
"requires_human_review": true
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"id": "annex-iii-5c-insurance-pricing",
|
|
103
|
+
"title": "Insurance risk assessment & pricing — life/health (Annex III item 5c)",
|
|
104
|
+
"triggers": {
|
|
105
|
+
"keyword_patterns": [
|
|
106
|
+
"insurance pricing", "tarification assurance", "underwriting",
|
|
107
|
+
"health insurance", "assurance santé", "life insurance", "assurance vie"
|
|
108
|
+
],
|
|
109
|
+
"negation_aware": true
|
|
110
|
+
},
|
|
111
|
+
"obligations": ["art-9", "art-10", "art-11", "art-12", "art-13", "art-14", "art-15"],
|
|
112
|
+
"fiches": ["ACF-02", "ACF-09", "ACF-11"],
|
|
113
|
+
"confidence_base": "medium",
|
|
114
|
+
"requires_human_review": true
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"id": "annex-iii-6-law-enforcement",
|
|
118
|
+
"title": "Law enforcement (Annex III item 6)",
|
|
119
|
+
"triggers": {
|
|
120
|
+
"keyword_patterns": [
|
|
121
|
+
"law enforcement", "police", "predictive policing", "evidence assessment",
|
|
122
|
+
"évaluation des preuves", "investigation", "enquête"
|
|
123
|
+
],
|
|
124
|
+
"enum_match": { "ai_act_triggers": ["law_enforcement"] },
|
|
125
|
+
"negation_aware": true
|
|
126
|
+
},
|
|
127
|
+
"obligations": ["art-9", "art-10", "art-11", "art-12", "art-13", "art-14", "art-15", "art-27"],
|
|
128
|
+
"fiches": ["ACF-02", "ACF-09", "ACF-11"],
|
|
129
|
+
"confidence_base": "high",
|
|
130
|
+
"requires_human_review": true
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
"id": "annex-iii-7-migration-asylum",
|
|
134
|
+
"title": "Migration, asylum and border control (Annex III item 7)",
|
|
135
|
+
"triggers": {
|
|
136
|
+
"keyword_patterns": [
|
|
137
|
+
"asylum", "asile", "migration", "border control", "contrôle frontalier",
|
|
138
|
+
"visa decision", "décision visa"
|
|
139
|
+
],
|
|
140
|
+
"enum_match": { "ai_act_triggers": ["migration_asylum"] },
|
|
141
|
+
"negation_aware": true
|
|
142
|
+
},
|
|
143
|
+
"obligations": ["art-9", "art-10", "art-11", "art-12", "art-13", "art-14", "art-15"],
|
|
144
|
+
"fiches": ["ACF-02", "ACF-09", "ACF-11"],
|
|
145
|
+
"confidence_base": "high",
|
|
146
|
+
"requires_human_review": true
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
"id": "annex-iii-8-justice-democracy",
|
|
150
|
+
"title": "Administration of justice and democratic processes (Annex III item 8)",
|
|
151
|
+
"triggers": {
|
|
152
|
+
"keyword_patterns": [
|
|
153
|
+
"court decision", "décision de justice", "judicial", "judiciaire",
|
|
154
|
+
"election", "élection", "voting"
|
|
155
|
+
],
|
|
156
|
+
"enum_match": { "ai_act_triggers": ["justice_democracy"] },
|
|
157
|
+
"negation_aware": true
|
|
158
|
+
},
|
|
159
|
+
"obligations": ["art-9", "art-10", "art-11", "art-12", "art-13", "art-14", "art-15"],
|
|
160
|
+
"fiches": ["ACF-02", "ACF-09", "ACF-11"],
|
|
161
|
+
"confidence_base": "high",
|
|
162
|
+
"requires_human_review": true
|
|
163
|
+
}
|
|
164
|
+
]
|
|
165
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "2026-06",
|
|
3
|
+
"last_update": "2026-06-07",
|
|
4
|
+
"rules": [
|
|
5
|
+
{
|
|
6
|
+
"id": "ai-act-role-provider-build-and-sell",
|
|
7
|
+
"triggers": {
|
|
8
|
+
"keyword_patterns": [
|
|
9
|
+
"we sell", "nous vendons", "we license", "nous licencions",
|
|
10
|
+
"saas", "we offer", "nous proposons", "product offering"
|
|
11
|
+
],
|
|
12
|
+
"enum_match": { "usage_audience": ["third_party_b2b", "public_consumer"] },
|
|
13
|
+
"negation_aware": true
|
|
14
|
+
},
|
|
15
|
+
"role": "provider",
|
|
16
|
+
"confidence_base": "medium",
|
|
17
|
+
"rationale_template": "The system is built and placed on the market or put into service under the entity's name → provider."
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"id": "ai-act-role-provider-build-internal-rebrand",
|
|
21
|
+
"triggers": {
|
|
22
|
+
"keyword_patterns": [
|
|
23
|
+
"white label", "marque blanche", "rebranded", "sous notre nom"
|
|
24
|
+
],
|
|
25
|
+
"negation_aware": true
|
|
26
|
+
},
|
|
27
|
+
"role": "provider",
|
|
28
|
+
"confidence_base": "medium",
|
|
29
|
+
"rationale_template": "The system is rebranded under the entity's name and re-placed on the market → provider responsibilities apply."
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"id": "ai-act-role-deployer-internal-use",
|
|
33
|
+
"triggers": {
|
|
34
|
+
"enum_match": { "usage_audience": ["internal"] },
|
|
35
|
+
"negation_aware": true
|
|
36
|
+
},
|
|
37
|
+
"role": "deployer",
|
|
38
|
+
"confidence_base": "high",
|
|
39
|
+
"rationale_template": "Internal use of a third-party AI system → deployer."
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"id": "ai-act-role-not-applicable",
|
|
43
|
+
"triggers": {
|
|
44
|
+
"enum_match": { "ai_act_triggers": ["none"] },
|
|
45
|
+
"negation_aware": true
|
|
46
|
+
},
|
|
47
|
+
"role": "not_applicable",
|
|
48
|
+
"confidence_base": "medium",
|
|
49
|
+
"rationale_template": "No Annex III or Annex I trigger declared → AI Act high-risk obligations likely not applicable, but transparency obligations (Art. 50) may still apply for GPAI usage."
|
|
50
|
+
}
|
|
51
|
+
]
|
|
52
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "2026-06",
|
|
3
|
+
"last_update": "2026-06-07",
|
|
4
|
+
"thresholds": [
|
|
5
|
+
{
|
|
6
|
+
"level": "N0",
|
|
7
|
+
"conditions": {
|
|
8
|
+
"human_approval_required": ["always"],
|
|
9
|
+
"external_actions": ["none", "read_only"]
|
|
10
|
+
},
|
|
11
|
+
"rationale_template": "Human approval required for every action and external surface is read-only or absent → the agent suggests, the human decides."
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"level": "N1",
|
|
15
|
+
"conditions": {
|
|
16
|
+
"human_approval_required": ["always"],
|
|
17
|
+
"external_actions": ["limited_write"]
|
|
18
|
+
},
|
|
19
|
+
"rationale_template": "Human approval required on every action with limited write access → supervised recommendation pattern."
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"level": "N2",
|
|
23
|
+
"conditions": {
|
|
24
|
+
"human_approval_required": ["sometimes"],
|
|
25
|
+
"external_actions": ["limited_write", "full_write"]
|
|
26
|
+
},
|
|
27
|
+
"rationale_template": "Conditional human approval, write actions allowed within a bounded perimeter → conditional execution (mandate required)."
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"level": "N3",
|
|
31
|
+
"conditions": {
|
|
32
|
+
"human_approval_required": ["never"],
|
|
33
|
+
"external_actions": ["full_write"]
|
|
34
|
+
},
|
|
35
|
+
"rationale_template": "No prior human approval and full write capabilities → autonomous execution (reinforced governance required)."
|
|
36
|
+
}
|
|
37
|
+
]
|
|
38
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "2026-06",
|
|
3
|
+
"last_update": "2026-06-07",
|
|
4
|
+
"cells": [
|
|
5
|
+
{
|
|
6
|
+
"personal_data_level": "none",
|
|
7
|
+
"financial_exposure": "none",
|
|
8
|
+
"sector_modifier": 0,
|
|
9
|
+
"score": "low",
|
|
10
|
+
"rationale_template": "No personal data and no financial exposure → low criticality baseline."
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"personal_data_level": "none",
|
|
14
|
+
"financial_exposure": "low_operation",
|
|
15
|
+
"sector_modifier": 0,
|
|
16
|
+
"score": "low",
|
|
17
|
+
"rationale_template": "Low operational financial exposure with no personal data → low criticality."
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"personal_data_level": "standard",
|
|
21
|
+
"financial_exposure": "low_operation",
|
|
22
|
+
"sector_modifier": 0,
|
|
23
|
+
"score": "medium",
|
|
24
|
+
"rationale_template": "Standard personal data + low operational exposure → medium criticality (GDPR + operational impact)."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"personal_data_level": "standard",
|
|
28
|
+
"financial_exposure": "medium_contract",
|
|
29
|
+
"sector_modifier": 0,
|
|
30
|
+
"score": "high",
|
|
31
|
+
"rationale_template": "Standard personal data + contract-level financial exposure → high criticality (impact on individuals + on contracts)."
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"personal_data_level": "standard",
|
|
35
|
+
"financial_exposure": "high_corporate",
|
|
36
|
+
"sector_modifier": 0,
|
|
37
|
+
"score": "high",
|
|
38
|
+
"rationale_template": "Standard personal data + high corporate financial exposure → high criticality."
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"personal_data_level": "sensitive_special",
|
|
42
|
+
"financial_exposure": "none",
|
|
43
|
+
"sector_modifier": 0,
|
|
44
|
+
"score": "high",
|
|
45
|
+
"rationale_template": "Sensitive/special-category personal data → high criticality even without financial exposure (GDPR Article 9)."
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"personal_data_level": "sensitive_special",
|
|
49
|
+
"financial_exposure": "low_operation",
|
|
50
|
+
"sector_modifier": 0,
|
|
51
|
+
"score": "high",
|
|
52
|
+
"rationale_template": "Sensitive personal data + any financial exposure → high criticality."
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"personal_data_level": "sensitive_special",
|
|
56
|
+
"financial_exposure": "medium_contract",
|
|
57
|
+
"sector_modifier": 0,
|
|
58
|
+
"score": "critical",
|
|
59
|
+
"rationale_template": "Sensitive personal data + contract-level financial exposure → critical criticality (Article 9 GDPR + operational stakes)."
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"personal_data_level": "sensitive_special",
|
|
63
|
+
"financial_exposure": "high_corporate",
|
|
64
|
+
"sector_modifier": 0,
|
|
65
|
+
"score": "critical",
|
|
66
|
+
"rationale_template": "Sensitive personal data + high corporate financial exposure → critical criticality (worst case in the matrix)."
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"personal_data_level": "none",
|
|
70
|
+
"financial_exposure": "high_corporate",
|
|
71
|
+
"sector_modifier": 0,
|
|
72
|
+
"score": "high",
|
|
73
|
+
"rationale_template": "High corporate financial exposure even without personal data → high criticality (financial stakes alone justify reinforced governance)."
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"personal_data_level": "none",
|
|
77
|
+
"financial_exposure": "medium_contract",
|
|
78
|
+
"sector_modifier": 0,
|
|
79
|
+
"score": "medium",
|
|
80
|
+
"rationale_template": "Contract-level financial exposure without personal data → medium criticality."
|
|
81
|
+
}
|
|
82
|
+
]
|
|
83
|
+
}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "2026-06",
|
|
3
|
+
"last_update": "2026-06-07",
|
|
4
|
+
"mappings": [
|
|
5
|
+
{
|
|
6
|
+
"level": "N0",
|
|
7
|
+
"risk": "low",
|
|
8
|
+
"recommended_controls": [
|
|
9
|
+
{
|
|
10
|
+
"title": "Suggestion logging",
|
|
11
|
+
"description": "Log every suggestion produced by the agent and the human acceptance/rejection.",
|
|
12
|
+
"owner_role": "ddao",
|
|
13
|
+
"frequency": "on_event",
|
|
14
|
+
"evidence_artifact": "suggestion-log.csv"
|
|
15
|
+
}
|
|
16
|
+
],
|
|
17
|
+
"ddao_controls": [
|
|
18
|
+
{
|
|
19
|
+
"control_id": "ACF-CTRL-001",
|
|
20
|
+
"control_type": "detective",
|
|
21
|
+
"fiche_reference": "ACF-05",
|
|
22
|
+
"implementation_note": "Append-only log with timestamp, user id (hashed), suggestion id, accept/reject."
|
|
23
|
+
}
|
|
24
|
+
]
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"level": "N2",
|
|
28
|
+
"risk": "high",
|
|
29
|
+
"recommended_controls": [
|
|
30
|
+
{
|
|
31
|
+
"title": "Formal agent mandate",
|
|
32
|
+
"description": "Mandate document signed by DDAO defining decision perimeter, escalation thresholds and kill switch.",
|
|
33
|
+
"owner_role": "ddao",
|
|
34
|
+
"frequency": "quarterly",
|
|
35
|
+
"evidence_artifact": "agent-mandate.pdf"
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"title": "Kill switch quarterly drill",
|
|
39
|
+
"description": "Test the agent freeze/redirect/revoke path on a non-production replay every quarter.",
|
|
40
|
+
"owner_role": "ciso",
|
|
41
|
+
"frequency": "quarterly",
|
|
42
|
+
"evidence_artifact": "drill-report.pdf"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"title": "Decision register",
|
|
46
|
+
"description": "Immutable timestamped log of every decision with structured inputs, output, doctrine version.",
|
|
47
|
+
"owner_role": "ddao",
|
|
48
|
+
"frequency": "on_event",
|
|
49
|
+
"evidence_artifact": "decision-register.jsonl"
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"title": "Quarterly risk review",
|
|
53
|
+
"description": "Review of risk profile, drift metrics and incidents over the quarter.",
|
|
54
|
+
"owner_role": "ddao",
|
|
55
|
+
"frequency": "quarterly",
|
|
56
|
+
"evidence_artifact": "risk-review-minutes.pdf"
|
|
57
|
+
}
|
|
58
|
+
],
|
|
59
|
+
"ddao_controls": [
|
|
60
|
+
{
|
|
61
|
+
"control_id": "ACF-CTRL-101",
|
|
62
|
+
"control_type": "preventive",
|
|
63
|
+
"fiche_reference": "ACF-12",
|
|
64
|
+
"implementation_note": "Mandate templates calibrated by sector; review frequency tied to criticality."
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"control_id": "ACF-CTRL-102",
|
|
68
|
+
"control_type": "corrective",
|
|
69
|
+
"fiche_reference": "ACF-07",
|
|
70
|
+
"implementation_note": "Kill switch with 3 levels: freeze (instant), redirect (≤5min), revoke (≤1h)."
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"control_id": "ACF-CTRL-103",
|
|
74
|
+
"control_type": "detective",
|
|
75
|
+
"fiche_reference": "ACF-05",
|
|
76
|
+
"implementation_note": "Decision register format aligned with Article 49 register for high-risk systems."
|
|
77
|
+
}
|
|
78
|
+
]
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"level": "N3",
|
|
82
|
+
"risk": "critical",
|
|
83
|
+
"recommended_controls": [
|
|
84
|
+
{
|
|
85
|
+
"title": "Deep formal mandate with monthly review",
|
|
86
|
+
"description": "Mandate signed by DDAO + business sponsor + CISO + DPO; monthly review of perimeter, thresholds and drift.",
|
|
87
|
+
"owner_role": "ddao",
|
|
88
|
+
"frequency": "monthly",
|
|
89
|
+
"evidence_artifact": "agent-mandate-deep.pdf"
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"title": "Multi-level kill switch — monthly drill",
|
|
93
|
+
"description": "3-level kill switch tested monthly (freeze / redirect / revoke). Drill results reviewed at next governance committee.",
|
|
94
|
+
"owner_role": "ciso",
|
|
95
|
+
"frequency": "monthly",
|
|
96
|
+
"evidence_artifact": "drill-report-monthly.pdf"
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"title": "Real-time drift monitoring",
|
|
100
|
+
"description": "Live dashboards tracking decision distribution, escalation rate, error rate with alerts on threshold breach.",
|
|
101
|
+
"owner_role": "ciso",
|
|
102
|
+
"frequency": "on_event",
|
|
103
|
+
"evidence_artifact": "drift-dashboard-link"
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"title": "Independent audit",
|
|
107
|
+
"description": "Annual independent audit of the agent (technical + governance + regulatory).",
|
|
108
|
+
"owner_role": "auditor",
|
|
109
|
+
"frequency": "annual",
|
|
110
|
+
"evidence_artifact": "audit-report.pdf"
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"title": "Board-level reporting",
|
|
114
|
+
"description": "Quarterly report to the board including incidents, drift, perimeter changes and remediation status.",
|
|
115
|
+
"owner_role": "business_owner",
|
|
116
|
+
"frequency": "quarterly",
|
|
117
|
+
"evidence_artifact": "board-report.pdf"
|
|
118
|
+
}
|
|
119
|
+
],
|
|
120
|
+
"ddao_controls": [
|
|
121
|
+
{
|
|
122
|
+
"control_id": "ACF-CTRL-201",
|
|
123
|
+
"control_type": "governance",
|
|
124
|
+
"fiche_reference": "ACF-12",
|
|
125
|
+
"implementation_note": "Quad sign-off (DDAO + sponsor + CISO + DPO) gates every mandate change."
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
"control_id": "ACF-CTRL-202",
|
|
129
|
+
"control_type": "preventive",
|
|
130
|
+
"fiche_reference": "ACF-07",
|
|
131
|
+
"implementation_note": "3-level kill switch with monthly drill and post-drill remediation log."
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
"control_id": "ACF-CTRL-203",
|
|
135
|
+
"control_type": "detective",
|
|
136
|
+
"fiche_reference": "ACF-08",
|
|
137
|
+
"implementation_note": "Live observability dashboards (decision distribution, escalation rate, error rate)."
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
"control_id": "ACF-CTRL-204",
|
|
141
|
+
"control_type": "corrective",
|
|
142
|
+
"fiche_reference": "ACF-14",
|
|
143
|
+
"implementation_note": "Documented incident playbook with named roles and SLA per criticality."
|
|
144
|
+
}
|
|
145
|
+
]
|
|
146
|
+
}
|
|
147
|
+
]
|
|
148
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "2026-06",
|
|
3
|
+
"last_update": "2026-06-07",
|
|
4
|
+
"cases": [
|
|
5
|
+
{
|
|
6
|
+
"id": "gdpr-controller-internal-use",
|
|
7
|
+
"triggers": {
|
|
8
|
+
"enum_match": {
|
|
9
|
+
"usage_audience": ["internal"],
|
|
10
|
+
"personal_data_level": ["standard", "sensitive_special"]
|
|
11
|
+
},
|
|
12
|
+
"negation_aware": true
|
|
13
|
+
},
|
|
14
|
+
"role": "controller",
|
|
15
|
+
"confidence_base": "high",
|
|
16
|
+
"rationale_template": "Internal usage with the entity defining purposes and means of processing → controller."
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"id": "gdpr-processor-b2b",
|
|
20
|
+
"triggers": {
|
|
21
|
+
"enum_match": {
|
|
22
|
+
"usage_audience": ["third_party_b2b"],
|
|
23
|
+
"personal_data_level": ["standard", "sensitive_special"]
|
|
24
|
+
},
|
|
25
|
+
"keyword_patterns": [
|
|
26
|
+
"on behalf of", "pour le compte de", "data processor", "sous-traitant"
|
|
27
|
+
],
|
|
28
|
+
"negation_aware": true
|
|
29
|
+
},
|
|
30
|
+
"role": "processor",
|
|
31
|
+
"confidence_base": "medium",
|
|
32
|
+
"rationale_template": "B2B usage where the entity acts on behalf of another controller → processor (subject to Article 28 contract)."
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"id": "gdpr-controller-consumer",
|
|
36
|
+
"triggers": {
|
|
37
|
+
"enum_match": {
|
|
38
|
+
"usage_audience": ["public_consumer"],
|
|
39
|
+
"personal_data_level": ["standard", "sensitive_special"]
|
|
40
|
+
},
|
|
41
|
+
"negation_aware": true
|
|
42
|
+
},
|
|
43
|
+
"role": "controller",
|
|
44
|
+
"confidence_base": "high",
|
|
45
|
+
"rationale_template": "Public consumer-facing service handling personal data → controller (typically)."
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"id": "gdpr-na-no-personal-data",
|
|
49
|
+
"triggers": {
|
|
50
|
+
"enum_match": { "personal_data_level": ["none"] },
|
|
51
|
+
"negation_aware": true
|
|
52
|
+
},
|
|
53
|
+
"role": "not_applicable",
|
|
54
|
+
"confidence_base": "high",
|
|
55
|
+
"rationale_template": "No personal data declared → GDPR qualification not applicable. Confirm with the team that no PII transits the agent."
|
|
56
|
+
}
|
|
57
|
+
]
|
|
58
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "2026-06",
|
|
3
|
+
"last_update": "2026-06-07",
|
|
4
|
+
"triggers": {
|
|
5
|
+
"keyword_patterns": [
|
|
6
|
+
"llm", "large language model", "foundation model", "modèle de fondation",
|
|
7
|
+
"generative ai", "ia générative", "gpt", "claude", "llama", "mistral",
|
|
8
|
+
"prompt", "embedding model"
|
|
9
|
+
],
|
|
10
|
+
"enum_match": { "gpai_used": ["true"] },
|
|
11
|
+
"negation_aware": true
|
|
12
|
+
},
|
|
13
|
+
"obligations": [
|
|
14
|
+
{
|
|
15
|
+
"article": "art-50",
|
|
16
|
+
"requirement": "Transparency obligations on AI systems intended to interact with natural persons (clear notice that the user is interacting with an AI system, unless obvious from context).",
|
|
17
|
+
"applicable_date": "2026-08-02"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"article": "art-51",
|
|
21
|
+
"requirement": "Classification of GPAI models and identification of systemic-risk models.",
|
|
22
|
+
"applicable_date": "2026-08-02"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"article": "art-53",
|
|
26
|
+
"requirement": "Technical documentation, training data summary, copyright policy, instructions for downstream providers.",
|
|
27
|
+
"applicable_date": "2026-08-02"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"article": "art-54",
|
|
31
|
+
"requirement": "Authorised representative requirement for non-EU GPAI providers placing models on the EU market.",
|
|
32
|
+
"applicable_date": "2026-08-02"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"article": "art-55",
|
|
36
|
+
"requirement": "Additional obligations for systemic-risk GPAI: model evaluations, adversarial testing, incident reporting, cybersecurity protection.",
|
|
37
|
+
"applicable_date": "2026-08-02",
|
|
38
|
+
"systemic_risk_only": true
|
|
39
|
+
}
|
|
40
|
+
]
|
|
41
|
+
}
|