@euconform/core 1.0.1 → 1.2.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.
Files changed (71) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +6 -0
  3. package/dist/index.d.ts +2 -2
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +1 -1
  6. package/dist/inference/ollama-client.d.ts +1 -0
  7. package/dist/inference/ollama-client.d.ts.map +1 -1
  8. package/dist/inference/ollama-client.js +15 -5
  9. package/dist/legal-checks/annex-iv-report.d.ts +3 -0
  10. package/dist/legal-checks/annex-iv-report.d.ts.map +1 -1
  11. package/dist/legal-checks/annex-iv-report.js +1 -0
  12. package/dist/legal-checks/deadline-timeline.d.ts +57 -0
  13. package/dist/legal-checks/deadline-timeline.d.ts.map +1 -0
  14. package/dist/legal-checks/deadline-timeline.js +265 -0
  15. package/dist/legal-checks/gap-analysis.d.ts +48 -0
  16. package/dist/legal-checks/gap-analysis.d.ts.map +1 -0
  17. package/dist/legal-checks/gap-analysis.js +397 -0
  18. package/dist/legal-checks/gpai-classifier.d.ts +49 -0
  19. package/dist/legal-checks/gpai-classifier.d.ts.map +1 -0
  20. package/dist/legal-checks/gpai-classifier.js +197 -0
  21. package/dist/legal-checks/index.d.ts +6 -0
  22. package/dist/legal-checks/index.d.ts.map +1 -1
  23. package/dist/legal-checks/index.js +3 -0
  24. package/package.json +1 -1
  25. package/src/index.ts +25 -0
  26. package/src/inference/ollama-client.ts +21 -5
  27. package/src/legal-checks/annex-iv-report.ts +4 -0
  28. package/src/legal-checks/deadline-timeline.ts +313 -0
  29. package/src/legal-checks/gap-analysis.ts +454 -0
  30. package/src/legal-checks/gpai-classifier.ts +281 -0
  31. package/src/legal-checks/index.ts +33 -0
  32. package/tests/gpai-classifier.test.ts +125 -0
  33. package/tests/gpai-timeline.test.ts +55 -0
  34. package/.turbo/turbo-check-types.log +0 -4
  35. package/.turbo/turbo-test.log +0 -364
  36. package/coverage/base.css +0 -224
  37. package/coverage/block-navigation.js +0 -87
  38. package/coverage/clover.xml +0 -3282
  39. package/coverage/coverage-final.json +0 -20
  40. package/coverage/favicon.png +0 -0
  41. package/coverage/index.html +0 -161
  42. package/coverage/prettify.css +0 -1
  43. package/coverage/prettify.js +0 -2
  44. package/coverage/sort-arrow-sprite.png +0 -0
  45. package/coverage/sorter.js +0 -210
  46. package/coverage/src/fairness-metrics.ts.html +0 -1579
  47. package/coverage/src/index.html +0 -161
  48. package/coverage/src/index.ts.html +0 -535
  49. package/coverage/src/inference/browser-inference.ts.html +0 -859
  50. package/coverage/src/inference/capability-detection.ts.html +0 -2227
  51. package/coverage/src/inference/index.html +0 -176
  52. package/coverage/src/inference/index.ts.html +0 -553
  53. package/coverage/src/inference/inference-factory.ts.html +0 -751
  54. package/coverage/src/inference/ollama-client.ts.html +0 -1627
  55. package/coverage/src/legal-checks/annex-iv-report.ts.html +0 -556
  56. package/coverage/src/legal-checks/bias-metrics.ts.html +0 -1855
  57. package/coverage/src/legal-checks/data-governance.ts.html +0 -529
  58. package/coverage/src/legal-checks/human-oversight-logging.ts.html +0 -490
  59. package/coverage/src/legal-checks/index.html +0 -206
  60. package/coverage/src/legal-checks/index.ts.html +0 -250
  61. package/coverage/src/legal-checks/risk-classifier.ts.html +0 -940
  62. package/coverage/src/legal-checks/robustness-transparency.ts.html +0 -571
  63. package/coverage/src/metrics/crows-pairs-bias.ts.html +0 -820
  64. package/coverage/src/metrics/index.html +0 -146
  65. package/coverage/src/metrics/index.ts.html +0 -151
  66. package/coverage/src/metrics/stereotype-bias.ts.html +0 -886
  67. package/coverage/src/risk-engine.ts.html +0 -1660
  68. package/coverage/src/types.ts.html +0 -547
  69. package/dist/legal-checks/disclaimer.d.ts +0 -2
  70. package/dist/legal-checks/disclaimer.d.ts.map +0 -1
  71. package/dist/legal-checks/disclaimer.js +0 -1
@@ -1,529 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for src/legal-checks/data-governance.ts</title>
7
- <meta charset="utf-8" />
8
- <link rel="stylesheet" href="../../prettify.css" />
9
- <link rel="stylesheet" href="../../base.css" />
10
- <link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
11
- <meta name="viewport" content="width=device-width, initial-scale=1" />
12
- <style type='text/css'>
13
- .coverage-summary .sorter {
14
- background-image: url(../../sort-arrow-sprite.png);
15
- }
16
- </style>
17
- </head>
18
-
19
- <body>
20
- <div class='wrapper'>
21
- <div class='pad1'>
22
- <h1><a href="../../index.html">All files</a> / <a href="index.html">src/legal-checks</a> data-governance.ts</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">0% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>0/112</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">100% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>1/1</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">100% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>1/1</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">0% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>0/112</span>
50
- </div>
51
-
52
-
53
- </div>
54
- <p class="quiet">
55
- Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
- </p>
57
- <template id="filterTemplate">
58
- <div class="quiet">
59
- Filter:
60
- <input type="search" id="fileSearch">
61
- </div>
62
- </template>
63
- </div>
64
- <div class='status-line low'></div>
65
- <pre><table class="coverage">
66
- <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
- <a name='L2'></a><a href='#L2'>2</a>
68
- <a name='L3'></a><a href='#L3'>3</a>
69
- <a name='L4'></a><a href='#L4'>4</a>
70
- <a name='L5'></a><a href='#L5'>5</a>
71
- <a name='L6'></a><a href='#L6'>6</a>
72
- <a name='L7'></a><a href='#L7'>7</a>
73
- <a name='L8'></a><a href='#L8'>8</a>
74
- <a name='L9'></a><a href='#L9'>9</a>
75
- <a name='L10'></a><a href='#L10'>10</a>
76
- <a name='L11'></a><a href='#L11'>11</a>
77
- <a name='L12'></a><a href='#L12'>12</a>
78
- <a name='L13'></a><a href='#L13'>13</a>
79
- <a name='L14'></a><a href='#L14'>14</a>
80
- <a name='L15'></a><a href='#L15'>15</a>
81
- <a name='L16'></a><a href='#L16'>16</a>
82
- <a name='L17'></a><a href='#L17'>17</a>
83
- <a name='L18'></a><a href='#L18'>18</a>
84
- <a name='L19'></a><a href='#L19'>19</a>
85
- <a name='L20'></a><a href='#L20'>20</a>
86
- <a name='L21'></a><a href='#L21'>21</a>
87
- <a name='L22'></a><a href='#L22'>22</a>
88
- <a name='L23'></a><a href='#L23'>23</a>
89
- <a name='L24'></a><a href='#L24'>24</a>
90
- <a name='L25'></a><a href='#L25'>25</a>
91
- <a name='L26'></a><a href='#L26'>26</a>
92
- <a name='L27'></a><a href='#L27'>27</a>
93
- <a name='L28'></a><a href='#L28'>28</a>
94
- <a name='L29'></a><a href='#L29'>29</a>
95
- <a name='L30'></a><a href='#L30'>30</a>
96
- <a name='L31'></a><a href='#L31'>31</a>
97
- <a name='L32'></a><a href='#L32'>32</a>
98
- <a name='L33'></a><a href='#L33'>33</a>
99
- <a name='L34'></a><a href='#L34'>34</a>
100
- <a name='L35'></a><a href='#L35'>35</a>
101
- <a name='L36'></a><a href='#L36'>36</a>
102
- <a name='L37'></a><a href='#L37'>37</a>
103
- <a name='L38'></a><a href='#L38'>38</a>
104
- <a name='L39'></a><a href='#L39'>39</a>
105
- <a name='L40'></a><a href='#L40'>40</a>
106
- <a name='L41'></a><a href='#L41'>41</a>
107
- <a name='L42'></a><a href='#L42'>42</a>
108
- <a name='L43'></a><a href='#L43'>43</a>
109
- <a name='L44'></a><a href='#L44'>44</a>
110
- <a name='L45'></a><a href='#L45'>45</a>
111
- <a name='L46'></a><a href='#L46'>46</a>
112
- <a name='L47'></a><a href='#L47'>47</a>
113
- <a name='L48'></a><a href='#L48'>48</a>
114
- <a name='L49'></a><a href='#L49'>49</a>
115
- <a name='L50'></a><a href='#L50'>50</a>
116
- <a name='L51'></a><a href='#L51'>51</a>
117
- <a name='L52'></a><a href='#L52'>52</a>
118
- <a name='L53'></a><a href='#L53'>53</a>
119
- <a name='L54'></a><a href='#L54'>54</a>
120
- <a name='L55'></a><a href='#L55'>55</a>
121
- <a name='L56'></a><a href='#L56'>56</a>
122
- <a name='L57'></a><a href='#L57'>57</a>
123
- <a name='L58'></a><a href='#L58'>58</a>
124
- <a name='L59'></a><a href='#L59'>59</a>
125
- <a name='L60'></a><a href='#L60'>60</a>
126
- <a name='L61'></a><a href='#L61'>61</a>
127
- <a name='L62'></a><a href='#L62'>62</a>
128
- <a name='L63'></a><a href='#L63'>63</a>
129
- <a name='L64'></a><a href='#L64'>64</a>
130
- <a name='L65'></a><a href='#L65'>65</a>
131
- <a name='L66'></a><a href='#L66'>66</a>
132
- <a name='L67'></a><a href='#L67'>67</a>
133
- <a name='L68'></a><a href='#L68'>68</a>
134
- <a name='L69'></a><a href='#L69'>69</a>
135
- <a name='L70'></a><a href='#L70'>70</a>
136
- <a name='L71'></a><a href='#L71'>71</a>
137
- <a name='L72'></a><a href='#L72'>72</a>
138
- <a name='L73'></a><a href='#L73'>73</a>
139
- <a name='L74'></a><a href='#L74'>74</a>
140
- <a name='L75'></a><a href='#L75'>75</a>
141
- <a name='L76'></a><a href='#L76'>76</a>
142
- <a name='L77'></a><a href='#L77'>77</a>
143
- <a name='L78'></a><a href='#L78'>78</a>
144
- <a name='L79'></a><a href='#L79'>79</a>
145
- <a name='L80'></a><a href='#L80'>80</a>
146
- <a name='L81'></a><a href='#L81'>81</a>
147
- <a name='L82'></a><a href='#L82'>82</a>
148
- <a name='L83'></a><a href='#L83'>83</a>
149
- <a name='L84'></a><a href='#L84'>84</a>
150
- <a name='L85'></a><a href='#L85'>85</a>
151
- <a name='L86'></a><a href='#L86'>86</a>
152
- <a name='L87'></a><a href='#L87'>87</a>
153
- <a name='L88'></a><a href='#L88'>88</a>
154
- <a name='L89'></a><a href='#L89'>89</a>
155
- <a name='L90'></a><a href='#L90'>90</a>
156
- <a name='L91'></a><a href='#L91'>91</a>
157
- <a name='L92'></a><a href='#L92'>92</a>
158
- <a name='L93'></a><a href='#L93'>93</a>
159
- <a name='L94'></a><a href='#L94'>94</a>
160
- <a name='L95'></a><a href='#L95'>95</a>
161
- <a name='L96'></a><a href='#L96'>96</a>
162
- <a name='L97'></a><a href='#L97'>97</a>
163
- <a name='L98'></a><a href='#L98'>98</a>
164
- <a name='L99'></a><a href='#L99'>99</a>
165
- <a name='L100'></a><a href='#L100'>100</a>
166
- <a name='L101'></a><a href='#L101'>101</a>
167
- <a name='L102'></a><a href='#L102'>102</a>
168
- <a name='L103'></a><a href='#L103'>103</a>
169
- <a name='L104'></a><a href='#L104'>104</a>
170
- <a name='L105'></a><a href='#L105'>105</a>
171
- <a name='L106'></a><a href='#L106'>106</a>
172
- <a name='L107'></a><a href='#L107'>107</a>
173
- <a name='L108'></a><a href='#L108'>108</a>
174
- <a name='L109'></a><a href='#L109'>109</a>
175
- <a name='L110'></a><a href='#L110'>110</a>
176
- <a name='L111'></a><a href='#L111'>111</a>
177
- <a name='L112'></a><a href='#L112'>112</a>
178
- <a name='L113'></a><a href='#L113'>113</a>
179
- <a name='L114'></a><a href='#L114'>114</a>
180
- <a name='L115'></a><a href='#L115'>115</a>
181
- <a name='L116'></a><a href='#L116'>116</a>
182
- <a name='L117'></a><a href='#L117'>117</a>
183
- <a name='L118'></a><a href='#L118'>118</a>
184
- <a name='L119'></a><a href='#L119'>119</a>
185
- <a name='L120'></a><a href='#L120'>120</a>
186
- <a name='L121'></a><a href='#L121'>121</a>
187
- <a name='L122'></a><a href='#L122'>122</a>
188
- <a name='L123'></a><a href='#L123'>123</a>
189
- <a name='L124'></a><a href='#L124'>124</a>
190
- <a name='L125'></a><a href='#L125'>125</a>
191
- <a name='L126'></a><a href='#L126'>126</a>
192
- <a name='L127'></a><a href='#L127'>127</a>
193
- <a name='L128'></a><a href='#L128'>128</a>
194
- <a name='L129'></a><a href='#L129'>129</a>
195
- <a name='L130'></a><a href='#L130'>130</a>
196
- <a name='L131'></a><a href='#L131'>131</a>
197
- <a name='L132'></a><a href='#L132'>132</a>
198
- <a name='L133'></a><a href='#L133'>133</a>
199
- <a name='L134'></a><a href='#L134'>134</a>
200
- <a name='L135'></a><a href='#L135'>135</a>
201
- <a name='L136'></a><a href='#L136'>136</a>
202
- <a name='L137'></a><a href='#L137'>137</a>
203
- <a name='L138'></a><a href='#L138'>138</a>
204
- <a name='L139'></a><a href='#L139'>139</a>
205
- <a name='L140'></a><a href='#L140'>140</a>
206
- <a name='L141'></a><a href='#L141'>141</a>
207
- <a name='L142'></a><a href='#L142'>142</a>
208
- <a name='L143'></a><a href='#L143'>143</a>
209
- <a name='L144'></a><a href='#L144'>144</a>
210
- <a name='L145'></a><a href='#L145'>145</a>
211
- <a name='L146'></a><a href='#L146'>146</a>
212
- <a name='L147'></a><a href='#L147'>147</a>
213
- <a name='L148'></a><a href='#L148'>148</a>
214
- <a name='L149'></a><a href='#L149'>149</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
215
- <span class="cline-any cline-neutral">&nbsp;</span>
216
- <span class="cline-any cline-neutral">&nbsp;</span>
217
- <span class="cline-any cline-neutral">&nbsp;</span>
218
- <span class="cline-any cline-neutral">&nbsp;</span>
219
- <span class="cline-any cline-neutral">&nbsp;</span>
220
- <span class="cline-any cline-neutral">&nbsp;</span>
221
- <span class="cline-any cline-neutral">&nbsp;</span>
222
- <span class="cline-any cline-neutral">&nbsp;</span>
223
- <span class="cline-any cline-neutral">&nbsp;</span>
224
- <span class="cline-any cline-neutral">&nbsp;</span>
225
- <span class="cline-any cline-neutral">&nbsp;</span>
226
- <span class="cline-any cline-neutral">&nbsp;</span>
227
- <span class="cline-any cline-neutral">&nbsp;</span>
228
- <span class="cline-any cline-neutral">&nbsp;</span>
229
- <span class="cline-any cline-neutral">&nbsp;</span>
230
- <span class="cline-any cline-neutral">&nbsp;</span>
231
- <span class="cline-any cline-neutral">&nbsp;</span>
232
- <span class="cline-any cline-neutral">&nbsp;</span>
233
- <span class="cline-any cline-neutral">&nbsp;</span>
234
- <span class="cline-any cline-neutral">&nbsp;</span>
235
- <span class="cline-any cline-neutral">&nbsp;</span>
236
- <span class="cline-any cline-neutral">&nbsp;</span>
237
- <span class="cline-any cline-neutral">&nbsp;</span>
238
- <span class="cline-any cline-neutral">&nbsp;</span>
239
- <span class="cline-any cline-neutral">&nbsp;</span>
240
- <span class="cline-any cline-neutral">&nbsp;</span>
241
- <span class="cline-any cline-neutral">&nbsp;</span>
242
- <span class="cline-any cline-neutral">&nbsp;</span>
243
- <span class="cline-any cline-neutral">&nbsp;</span>
244
- <span class="cline-any cline-no">&nbsp;</span>
245
- <span class="cline-any cline-neutral">&nbsp;</span>
246
- <span class="cline-any cline-neutral">&nbsp;</span>
247
- <span class="cline-any cline-no">&nbsp;</span>
248
- <span class="cline-any cline-no">&nbsp;</span>
249
- <span class="cline-any cline-no">&nbsp;</span>
250
- <span class="cline-any cline-no">&nbsp;</span>
251
- <span class="cline-any cline-no">&nbsp;</span>
252
- <span class="cline-any cline-no">&nbsp;</span>
253
- <span class="cline-any cline-no">&nbsp;</span>
254
- <span class="cline-any cline-no">&nbsp;</span>
255
- <span class="cline-any cline-no">&nbsp;</span>
256
- <span class="cline-any cline-no">&nbsp;</span>
257
- <span class="cline-any cline-no">&nbsp;</span>
258
- <span class="cline-any cline-no">&nbsp;</span>
259
- <span class="cline-any cline-no">&nbsp;</span>
260
- <span class="cline-any cline-neutral">&nbsp;</span>
261
- <span class="cline-any cline-no">&nbsp;</span>
262
- <span class="cline-any cline-no">&nbsp;</span>
263
- <span class="cline-any cline-no">&nbsp;</span>
264
- <span class="cline-any cline-no">&nbsp;</span>
265
- <span class="cline-any cline-no">&nbsp;</span>
266
- <span class="cline-any cline-no">&nbsp;</span>
267
- <span class="cline-any cline-no">&nbsp;</span>
268
- <span class="cline-any cline-no">&nbsp;</span>
269
- <span class="cline-any cline-no">&nbsp;</span>
270
- <span class="cline-any cline-no">&nbsp;</span>
271
- <span class="cline-any cline-no">&nbsp;</span>
272
- <span class="cline-any cline-no">&nbsp;</span>
273
- <span class="cline-any cline-no">&nbsp;</span>
274
- <span class="cline-any cline-no">&nbsp;</span>
275
- <span class="cline-any cline-no">&nbsp;</span>
276
- <span class="cline-any cline-no">&nbsp;</span>
277
- <span class="cline-any cline-no">&nbsp;</span>
278
- <span class="cline-any cline-no">&nbsp;</span>
279
- <span class="cline-any cline-no">&nbsp;</span>
280
- <span class="cline-any cline-no">&nbsp;</span>
281
- <span class="cline-any cline-no">&nbsp;</span>
282
- <span class="cline-any cline-no">&nbsp;</span>
283
- <span class="cline-any cline-no">&nbsp;</span>
284
- <span class="cline-any cline-no">&nbsp;</span>
285
- <span class="cline-any cline-no">&nbsp;</span>
286
- <span class="cline-any cline-no">&nbsp;</span>
287
- <span class="cline-any cline-no">&nbsp;</span>
288
- <span class="cline-any cline-no">&nbsp;</span>
289
- <span class="cline-any cline-no">&nbsp;</span>
290
- <span class="cline-any cline-no">&nbsp;</span>
291
- <span class="cline-any cline-no">&nbsp;</span>
292
- <span class="cline-any cline-no">&nbsp;</span>
293
- <span class="cline-any cline-no">&nbsp;</span>
294
- <span class="cline-any cline-no">&nbsp;</span>
295
- <span class="cline-any cline-no">&nbsp;</span>
296
- <span class="cline-any cline-no">&nbsp;</span>
297
- <span class="cline-any cline-no">&nbsp;</span>
298
- <span class="cline-any cline-no">&nbsp;</span>
299
- <span class="cline-any cline-no">&nbsp;</span>
300
- <span class="cline-any cline-no">&nbsp;</span>
301
- <span class="cline-any cline-no">&nbsp;</span>
302
- <span class="cline-any cline-no">&nbsp;</span>
303
- <span class="cline-any cline-no">&nbsp;</span>
304
- <span class="cline-any cline-no">&nbsp;</span>
305
- <span class="cline-any cline-no">&nbsp;</span>
306
- <span class="cline-any cline-no">&nbsp;</span>
307
- <span class="cline-any cline-no">&nbsp;</span>
308
- <span class="cline-any cline-no">&nbsp;</span>
309
- <span class="cline-any cline-no">&nbsp;</span>
310
- <span class="cline-any cline-no">&nbsp;</span>
311
- <span class="cline-any cline-no">&nbsp;</span>
312
- <span class="cline-any cline-no">&nbsp;</span>
313
- <span class="cline-any cline-no">&nbsp;</span>
314
- <span class="cline-any cline-no">&nbsp;</span>
315
- <span class="cline-any cline-no">&nbsp;</span>
316
- <span class="cline-any cline-no">&nbsp;</span>
317
- <span class="cline-any cline-no">&nbsp;</span>
318
- <span class="cline-any cline-no">&nbsp;</span>
319
- <span class="cline-any cline-no">&nbsp;</span>
320
- <span class="cline-any cline-no">&nbsp;</span>
321
- <span class="cline-any cline-no">&nbsp;</span>
322
- <span class="cline-any cline-no">&nbsp;</span>
323
- <span class="cline-any cline-no">&nbsp;</span>
324
- <span class="cline-any cline-no">&nbsp;</span>
325
- <span class="cline-any cline-no">&nbsp;</span>
326
- <span class="cline-any cline-no">&nbsp;</span>
327
- <span class="cline-any cline-no">&nbsp;</span>
328
- <span class="cline-any cline-no">&nbsp;</span>
329
- <span class="cline-any cline-no">&nbsp;</span>
330
- <span class="cline-any cline-no">&nbsp;</span>
331
- <span class="cline-any cline-no">&nbsp;</span>
332
- <span class="cline-any cline-no">&nbsp;</span>
333
- <span class="cline-any cline-no">&nbsp;</span>
334
- <span class="cline-any cline-neutral">&nbsp;</span>
335
- <span class="cline-any cline-no">&nbsp;</span>
336
- <span class="cline-any cline-no">&nbsp;</span>
337
- <span class="cline-any cline-no">&nbsp;</span>
338
- <span class="cline-any cline-no">&nbsp;</span>
339
- <span class="cline-any cline-no">&nbsp;</span>
340
- <span class="cline-any cline-no">&nbsp;</span>
341
- <span class="cline-any cline-neutral">&nbsp;</span>
342
- <span class="cline-any cline-no">&nbsp;</span>
343
- <span class="cline-any cline-no">&nbsp;</span>
344
- <span class="cline-any cline-no">&nbsp;</span>
345
- <span class="cline-any cline-no">&nbsp;</span>
346
- <span class="cline-any cline-no">&nbsp;</span>
347
- <span class="cline-any cline-no">&nbsp;</span>
348
- <span class="cline-any cline-no">&nbsp;</span>
349
- <span class="cline-any cline-no">&nbsp;</span>
350
- <span class="cline-any cline-no">&nbsp;</span>
351
- <span class="cline-any cline-no">&nbsp;</span>
352
- <span class="cline-any cline-no">&nbsp;</span>
353
- <span class="cline-any cline-no">&nbsp;</span>
354
- <span class="cline-any cline-neutral">&nbsp;</span>
355
- <span class="cline-any cline-no">&nbsp;</span>
356
- <span class="cline-any cline-no">&nbsp;</span>
357
- <span class="cline-any cline-no">&nbsp;</span>
358
- <span class="cline-any cline-no">&nbsp;</span>
359
- <span class="cline-any cline-no">&nbsp;</span>
360
- <span class="cline-any cline-no">&nbsp;</span>
361
- <span class="cline-any cline-no">&nbsp;</span>
362
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">/**
363
- * Article 10(3–4) – Data Governance &amp; Data Quality Checklist (evidence-oriented)
364
- *
365
- * This produces a structured checklist that can be included in Annex IV documentation.
366
- * It is not a legal determination.
367
- */
368
- &nbsp;
369
- import type { Citation } from "./bias-metrics";
370
- &nbsp;
371
- export type ChecklistStatus = "yes" | "no" | "partial" | "unknown";
372
- &nbsp;
373
- export interface DataGovernanceChecklistItem {
374
- id: string;
375
- question: string;
376
- rationale: string;
377
- status: ChecklistStatus;
378
- evidence?: string;
379
- risksIfNo: string[];
380
- }
381
- &nbsp;
382
- export interface DataGovernanceChecklistResult {
383
- timestamp: string;
384
- items: DataGovernanceChecklistItem[];
385
- overall: {
386
- missingCriticalCount: number;
387
- notes: string[];
388
- };
389
- sources: Citation[];
390
- }
391
- &nbsp;
392
- <span class="cstat-no" title="statement not covered" >export function runDataGovernanceChecklist(input: {</span>
393
- statuses: Record&lt;string, ChecklistStatus&gt;;
394
- evidence?: Record&lt;string, string&gt;;
395
- <span class="cstat-no" title="statement not covered" >}): DataGovernanceChecklistResult {</span>
396
- <span class="cstat-no" title="statement not covered" > const sources: Citation[] = [</span>
397
- <span class="cstat-no" title="statement not covered" > { label: "EU AI Act", reference: "Verordnung (EU) 2024/1689" },</span>
398
- <span class="cstat-no" title="statement not covered" > {</span>
399
- <span class="cstat-no" title="statement not covered" > label: "Art. 10(3–4)",</span>
400
- <span class="cstat-no" title="statement not covered" > reference:</span>
401
- <span class="cstat-no" title="statement not covered" > "Data governance / data quality expectations (repräsentativ, fehlerarm, dokumentiert)",</span>
402
- <span class="cstat-no" title="statement not covered" > },</span>
403
- <span class="cstat-no" title="statement not covered" > {</span>
404
- <span class="cstat-no" title="statement not covered" > label: "Recital 54",</span>
405
- <span class="cstat-no" title="statement not covered" > reference: "Schutz vor Diskriminierung &amp; historische Bias/Feedback-Loops",</span>
406
- <span class="cstat-no" title="statement not covered" > },</span>
407
- <span class="cstat-no" title="statement not covered" > ];</span>
408
- &nbsp;
409
- <span class="cstat-no" title="statement not covered" > const items: Omit&lt;DataGovernanceChecklistItem, "status" | "evidence"&gt;[] = [</span>
410
- <span class="cstat-no" title="statement not covered" > {</span>
411
- <span class="cstat-no" title="statement not covered" > id: "representativeness",</span>
412
- <span class="cstat-no" title="statement not covered" > question:</span>
413
- <span class="cstat-no" title="statement not covered" > "Ist das Trainings-/Validierungsdataset für den vorgesehenen Einsatzkontext repräsentativ?",</span>
414
- <span class="cstat-no" title="statement not covered" > rationale:</span>
415
- <span class="cstat-no" title="statement not covered" > "Nicht-repräsentative Daten erhöhen Fehlerraten und können Diskriminierung verstärken (insb. unterrepräsentierte Gruppen).",</span>
416
- <span class="cstat-no" title="statement not covered" > risksIfNo: [</span>
417
- <span class="cstat-no" title="statement not covered" > "Systematische Fehlklassifikation für Teilpopulationen",</span>
418
- <span class="cstat-no" title="statement not covered" > "Disparate impact / unfaire Fehlerverteilung",</span>
419
- <span class="cstat-no" title="statement not covered" > "Fehlende Generalisierung im Deployment-Kontext",</span>
420
- <span class="cstat-no" title="statement not covered" > ],</span>
421
- <span class="cstat-no" title="statement not covered" > },</span>
422
- <span class="cstat-no" title="statement not covered" > {</span>
423
- <span class="cstat-no" title="statement not covered" > id: "data_quality_errors",</span>
424
- <span class="cstat-no" title="statement not covered" > question:</span>
425
- <span class="cstat-no" title="statement not covered" > "Sind Datenqualität (Fehler, Duplikate, Ausreißer, Missingness) gemessen und adressiert?",</span>
426
- <span class="cstat-no" title="statement not covered" > rationale:</span>
427
- <span class="cstat-no" title="statement not covered" > "Mess-/Label-Fehler und fehlende Daten sind häufige Ursachen für Bias und Instabilität in Modellen.",</span>
428
- <span class="cstat-no" title="statement not covered" > risksIfNo: [</span>
429
- <span class="cstat-no" title="statement not covered" > "Verzerrte Lernsignale und spurious correlations",</span>
430
- <span class="cstat-no" title="statement not covered" > "Instabile Performance bei Drift",</span>
431
- <span class="cstat-no" title="statement not covered" > "Unklare Fehlerursachen im Incident-Fall",</span>
432
- <span class="cstat-no" title="statement not covered" > ],</span>
433
- <span class="cstat-no" title="statement not covered" > },</span>
434
- <span class="cstat-no" title="statement not covered" > {</span>
435
- <span class="cstat-no" title="statement not covered" > id: "labeling_process",</span>
436
- <span class="cstat-no" title="statement not covered" > question:</span>
437
- <span class="cstat-no" title="statement not covered" > "Ist der Labeling-/Annotation- und QA-Prozess dokumentiert (Guidelines, Inter-Annotator Agreement)?",</span>
438
- <span class="cstat-no" title="statement not covered" > rationale:</span>
439
- <span class="cstat-no" title="statement not covered" > "Reproduzierbarkeit und Auditierbarkeit hängen von nachvollziehbarer Annotation ab.",</span>
440
- <span class="cstat-no" title="statement not covered" > risksIfNo: [</span>
441
- <span class="cstat-no" title="statement not covered" > "Nicht-reproduzierbare Labels",</span>
442
- <span class="cstat-no" title="statement not covered" > "Bias durch uneinheitliche Annotation",</span>
443
- <span class="cstat-no" title="statement not covered" > "Schwierige Fehleranalyse im Betrieb",</span>
444
- <span class="cstat-no" title="statement not covered" > ],</span>
445
- <span class="cstat-no" title="statement not covered" > },</span>
446
- <span class="cstat-no" title="statement not covered" > {</span>
447
- <span class="cstat-no" title="statement not covered" > id: "sensitive_attributes_handling",</span>
448
- <span class="cstat-no" title="statement not covered" > question:</span>
449
- <span class="cstat-no" title="statement not covered" > "Ist der Umgang mit sensiblen Attributen (z. B. Geschlecht, Ethnie, Alter, Behinderung, Religion, sexuelle Orientierung) definiert und begründet?",</span>
450
- <span class="cstat-no" title="statement not covered" > rationale:</span>
451
- <span class="cstat-no" title="statement not covered" > "Für Bias-Analysen sind Gruppenproxies/Attribute oft nötig; zugleich müssen Verarbeitung und Minimierung begründet und dokumentiert werden.",</span>
452
- <span class="cstat-no" title="statement not covered" > risksIfNo: [</span>
453
- <span class="cstat-no" title="statement not covered" > "Bias bleibt unmessbar / unsichtbar",</span>
454
- <span class="cstat-no" title="statement not covered" > "Fehlende Nachvollziehbarkeit der Fairness-Tests",</span>
455
- <span class="cstat-no" title="statement not covered" > "Unklare Proxy-Risiken und Messfehler",</span>
456
- <span class="cstat-no" title="statement not covered" > ],</span>
457
- <span class="cstat-no" title="statement not covered" > },</span>
458
- <span class="cstat-no" title="statement not covered" > {</span>
459
- <span class="cstat-no" title="statement not covered" > id: "feedback_loops",</span>
460
- <span class="cstat-no" title="statement not covered" > question: "Sind historische Bias und mögliche Feedback-Loops identifiziert und mitigiert?",</span>
461
- <span class="cstat-no" title="statement not covered" > rationale:</span>
462
- <span class="cstat-no" title="statement not covered" > "Modelle können bestehende Ungleichheiten verstärken, wenn Outputs in die Datenerzeugung zurückfließen.",</span>
463
- <span class="cstat-no" title="statement not covered" > risksIfNo: [</span>
464
- <span class="cstat-no" title="statement not covered" > "Self-fulfilling bias / reinforcement",</span>
465
- <span class="cstat-no" title="statement not covered" > "Verschlechterung über Zeit trotz kurzfristiger Performance",</span>
466
- <span class="cstat-no" title="statement not covered" > "Fehlender Nachweis wirksamer Mitigation",</span>
467
- <span class="cstat-no" title="statement not covered" > ],</span>
468
- <span class="cstat-no" title="statement not covered" > },</span>
469
- <span class="cstat-no" title="statement not covered" > {</span>
470
- <span class="cstat-no" title="statement not covered" > id: "dataset_documentation",</span>
471
- <span class="cstat-no" title="statement not covered" > question:</span>
472
- <span class="cstat-no" title="statement not covered" > "Existiert eine Dataset-Dokumentation (Herkunft, Zeiträume, Lizenz, Sampling, Preprocessing, Versionierung, Known Limitations)?",</span>
473
- <span class="cstat-no" title="statement not covered" > rationale:</span>
474
- <span class="cstat-no" title="statement not covered" > "Annex-IV-fähige Dokumentation erfordert nachvollziehbare Datenherkunft und Versionsstände.",</span>
475
- <span class="cstat-no" title="statement not covered" > risksIfNo: [</span>
476
- <span class="cstat-no" title="statement not covered" > "Nicht-auditierbare Datenpipeline",</span>
477
- <span class="cstat-no" title="statement not covered" > "Unklare Lizenz-/Nutzungsrisiken",</span>
478
- <span class="cstat-no" title="statement not covered" > "Nicht reproduzierbare Trainingsläufe",</span>
479
- <span class="cstat-no" title="statement not covered" > ],</span>
480
- <span class="cstat-no" title="statement not covered" > },</span>
481
- <span class="cstat-no" title="statement not covered" > ];</span>
482
- &nbsp;
483
- <span class="cstat-no" title="statement not covered" > const evidence = input.evidence ?? {};</span>
484
- <span class="cstat-no" title="statement not covered" > const built: DataGovernanceChecklistItem[] = items.map((it) =&gt; ({</span>
485
- <span class="cstat-no" title="statement not covered" > ...it,</span>
486
- <span class="cstat-no" title="statement not covered" > status: input.statuses[it.id] ?? "unknown",</span>
487
- <span class="cstat-no" title="statement not covered" > evidence: evidence[it.id],</span>
488
- <span class="cstat-no" title="statement not covered" > }));</span>
489
- &nbsp;
490
- <span class="cstat-no" title="statement not covered" > const missingCriticalCount = built.filter(</span>
491
- <span class="cstat-no" title="statement not covered" > (i) =&gt; i.status === "no" || i.status === "unknown"</span>
492
- <span class="cstat-no" title="statement not covered" > ).length;</span>
493
- <span class="cstat-no" title="statement not covered" > const notes: string[] = [];</span>
494
- <span class="cstat-no" title="statement not covered" > if (missingCriticalCount &gt; 0) {</span>
495
- <span class="cstat-no" title="statement not covered" > notes.push(</span>
496
- <span class="cstat-no" title="statement not covered" > "Mehrere Data-Governance-Punkte sind offen/negativ. Für Annex-IV-Dokumentation sollten Evidenzen, Messmethoden und Mitigationen ergänzt werden."</span>
497
- <span class="cstat-no" title="statement not covered" > );</span>
498
- <span class="cstat-no" title="statement not covered" > }</span>
499
- <span class="cstat-no" title="statement not covered" > notes.push(</span>
500
- <span class="cstat-no" title="statement not covered" > "Hinweis: Historische Bias und Feedback-Loops sollten explizit beschrieben und mit Monitoring adressiert werden."</span>
501
- <span class="cstat-no" title="statement not covered" > );</span>
502
- &nbsp;
503
- <span class="cstat-no" title="statement not covered" > return {</span>
504
- <span class="cstat-no" title="statement not covered" > timestamp: new Date().toISOString(),</span>
505
- <span class="cstat-no" title="statement not covered" > items: built,</span>
506
- <span class="cstat-no" title="statement not covered" > overall: { missingCriticalCount, notes },</span>
507
- <span class="cstat-no" title="statement not covered" > sources,</span>
508
- <span class="cstat-no" title="statement not covered" > };</span>
509
- <span class="cstat-no" title="statement not covered" >}</span>
510
- &nbsp;</pre></td></tr></table></pre>
511
-
512
- <div class='push'></div><!-- for sticky footer -->
513
- </div><!-- /wrapper -->
514
- <div class='footer quiet pad2 space-top1 center small'>
515
- Code coverage generated by
516
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
517
- at 2026-01-07T00:09:13.255Z
518
- </div>
519
- <script src="../../prettify.js"></script>
520
- <script>
521
- window.onload = function () {
522
- prettyPrint();
523
- };
524
- </script>
525
- <script src="../../sorter.js"></script>
526
- <script src="../../block-navigation.js"></script>
527
- </body>
528
- </html>
529
-