@complior/engine 0.9.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 (594) hide show
  1. package/.well-known/ai-compliance.json +16 -0
  2. package/COMPLIANCE.md +64 -0
  3. package/data/data-integrity.test.ts +75 -0
  4. package/data/eval/eval-mappings.json +33 -0
  5. package/data/llm/model-pricing.json +15 -0
  6. package/data/llm/model-routing.json +36 -0
  7. package/data/onboarding/risk-profile.json +17 -0
  8. package/data/regulations/eu-ai-act/README.md +245 -0
  9. package/data/regulations/eu-ai-act/applicability-tree.json +160 -0
  10. package/data/regulations/eu-ai-act/cross-mapping.json +175 -0
  11. package/data/regulations/eu-ai-act/localization.json +186 -0
  12. package/data/regulations/eu-ai-act/obligations.json +3981 -0
  13. package/data/regulations/eu-ai-act/regulation-meta.json +482 -0
  14. package/data/regulations/eu-ai-act/scoring.json +342 -0
  15. package/data/regulations/eu-ai-act/technical-requirements.json +2590 -0
  16. package/data/regulations/eu-ai-act/timeline.json +160 -0
  17. package/data/regulations/jurisdictions/at.json +15 -0
  18. package/data/regulations/jurisdictions/be.json +15 -0
  19. package/data/regulations/jurisdictions/bg.json +15 -0
  20. package/data/regulations/jurisdictions/cy.json +15 -0
  21. package/data/regulations/jurisdictions/cz.json +15 -0
  22. package/data/regulations/jurisdictions/de.json +15 -0
  23. package/data/regulations/jurisdictions/dk.json +15 -0
  24. package/data/regulations/jurisdictions/ee.json +15 -0
  25. package/data/regulations/jurisdictions/es.json +15 -0
  26. package/data/regulations/jurisdictions/fi.json +15 -0
  27. package/data/regulations/jurisdictions/fr.json +15 -0
  28. package/data/regulations/jurisdictions/gr.json +15 -0
  29. package/data/regulations/jurisdictions/hr.json +15 -0
  30. package/data/regulations/jurisdictions/hu.json +15 -0
  31. package/data/regulations/jurisdictions/ie.json +15 -0
  32. package/data/regulations/jurisdictions/is.json +15 -0
  33. package/data/regulations/jurisdictions/it.json +15 -0
  34. package/data/regulations/jurisdictions/li.json +15 -0
  35. package/data/regulations/jurisdictions/lt.json +15 -0
  36. package/data/regulations/jurisdictions/lu.json +15 -0
  37. package/data/regulations/jurisdictions/lv.json +15 -0
  38. package/data/regulations/jurisdictions/mt.json +15 -0
  39. package/data/regulations/jurisdictions/nl.json +15 -0
  40. package/data/regulations/jurisdictions/no.json +15 -0
  41. package/data/regulations/jurisdictions/pl.json +15 -0
  42. package/data/regulations/jurisdictions/pt.json +15 -0
  43. package/data/regulations/jurisdictions/ro.json +15 -0
  44. package/data/regulations/jurisdictions/se.json +15 -0
  45. package/data/regulations/jurisdictions/si.json +15 -0
  46. package/data/regulations/jurisdictions/sk.json +15 -0
  47. package/data/scanner/check-id-categories.json +81 -0
  48. package/data/scanner/confidence-params.json +16 -0
  49. package/data/scanner/limits.json +4 -0
  50. package/data/schemas/http-contract-sample.json +79 -0
  51. package/data/schemas/http-contract.json +144 -0
  52. package/data/semgrep-rules/bare-call.yaml +37 -0
  53. package/data/semgrep-rules/injection.yaml +73 -0
  54. package/data/semgrep-rules/missing-error-handling.yaml +58 -0
  55. package/data/semgrep-rules/unsafe-deser.yaml +65 -0
  56. package/data/templates/eu-ai-act/ai-literacy.md +184 -0
  57. package/data/templates/eu-ai-act/art5-screening.md +131 -0
  58. package/data/templates/eu-ai-act/data-governance.md +145 -0
  59. package/data/templates/eu-ai-act/declaration-of-conformity.md +161 -0
  60. package/data/templates/eu-ai-act/fria.md +127 -0
  61. package/data/templates/eu-ai-act/gpai-systemic-risk.md +150 -0
  62. package/data/templates/eu-ai-act/gpai-transparency.md +166 -0
  63. package/data/templates/eu-ai-act/incident-report.md +188 -0
  64. package/data/templates/eu-ai-act/instructions-for-use.md +202 -0
  65. package/data/templates/eu-ai-act/monitoring-policy.md +110 -0
  66. package/data/templates/eu-ai-act/qms.md +180 -0
  67. package/data/templates/eu-ai-act/risk-management-system.md +123 -0
  68. package/data/templates/eu-ai-act/technical-documentation.md +287 -0
  69. package/data/templates/eu-ai-act/worker-notification.md +143 -0
  70. package/data/templates/policies/biometrics-ai-policy.md +214 -0
  71. package/data/templates/policies/critical-infra-ai-policy.md +228 -0
  72. package/data/templates/policies/education-ai-policy.md +184 -0
  73. package/data/templates/policies/finance-ai-policy.md +191 -0
  74. package/data/templates/policies/healthcare-ai-policy.md +197 -0
  75. package/data/templates/policies/hr-ai-policy.md +178 -0
  76. package/data/templates/policies/legal-ai-policy.md +189 -0
  77. package/data/templates/policies/migration-ai-policy.md +239 -0
  78. package/engine.log +7 -0
  79. package/package.json +74 -0
  80. package/src/composition-root.ts +791 -0
  81. package/src/data/eval/conformity-tests.test.ts +122 -0
  82. package/src/data/eval/ct-1-transparency.ts +106 -0
  83. package/src/data/eval/ct-10-gpai.ts +25 -0
  84. package/src/data/eval/ct-11-industry.ts +42 -0
  85. package/src/data/eval/ct-2-oversight.ts +41 -0
  86. package/src/data/eval/ct-3-explanation.ts +14 -0
  87. package/src/data/eval/ct-4-bias.ts +83 -0
  88. package/src/data/eval/ct-5-accuracy.ts +41 -0
  89. package/src/data/eval/ct-6-robustness.ts +81 -0
  90. package/src/data/eval/ct-7-prohibited.ts +52 -0
  91. package/src/data/eval/ct-8-logging.ts +68 -0
  92. package/src/data/eval/ct-9-risk-awareness.ts +33 -0
  93. package/src/data/eval/deterministic-evaluator.ts +120 -0
  94. package/src/data/eval/index.ts +55 -0
  95. package/src/data/eval/judge-prompts.ts +146 -0
  96. package/src/data/eval/llm-judged-tests.ts +279 -0
  97. package/src/data/eval/llm-tests.test.ts +83 -0
  98. package/src/data/eval/remediation/ct-1-transparency.ts +91 -0
  99. package/src/data/eval/remediation/ct-10-gpai.ts +94 -0
  100. package/src/data/eval/remediation/ct-11-industry.ts +94 -0
  101. package/src/data/eval/remediation/ct-2-oversight.ts +71 -0
  102. package/src/data/eval/remediation/ct-3-explanation.ts +70 -0
  103. package/src/data/eval/remediation/ct-4-bias.ts +70 -0
  104. package/src/data/eval/remediation/ct-5-accuracy.ts +70 -0
  105. package/src/data/eval/remediation/ct-6-robustness.ts +70 -0
  106. package/src/data/eval/remediation/ct-7-prohibited.ts +94 -0
  107. package/src/data/eval/remediation/ct-8-logging.ts +94 -0
  108. package/src/data/eval/remediation/ct-9-risk-awareness.ts +94 -0
  109. package/src/data/eval/remediation/index.ts +89 -0
  110. package/src/data/eval/remediation/owasp-art5.ts +15 -0
  111. package/src/data/eval/remediation/owasp-llm01.ts +72 -0
  112. package/src/data/eval/remediation/owasp-llm02.ts +72 -0
  113. package/src/data/eval/remediation/owasp-llm03.ts +15 -0
  114. package/src/data/eval/remediation/owasp-llm04.ts +15 -0
  115. package/src/data/eval/remediation/owasp-llm05.ts +15 -0
  116. package/src/data/eval/remediation/owasp-llm06.ts +15 -0
  117. package/src/data/eval/remediation/owasp-llm07.ts +15 -0
  118. package/src/data/eval/remediation/owasp-llm08.ts +15 -0
  119. package/src/data/eval/remediation/owasp-llm09.ts +15 -0
  120. package/src/data/eval/remediation/owasp-llm10.ts +15 -0
  121. package/src/data/eval/remediation/remediation.test.ts +229 -0
  122. package/src/data/eval/remediation/test-mapping.ts +290 -0
  123. package/src/data/eval/security-rubrics.ts +381 -0
  124. package/src/data/finding-explanations.json +453 -0
  125. package/src/data/industry-patterns.ts +161 -0
  126. package/src/data/registry-cards.ts +368 -0
  127. package/src/data/regulation/index.ts +5 -0
  128. package/src/data/regulation/jurisdiction-data.test.ts +73 -0
  129. package/src/data/regulation/jurisdiction-data.ts +65 -0
  130. package/src/data/regulation/regulation-data.ts +19 -0
  131. package/src/data/regulation/regulation-loader.test.ts +107 -0
  132. package/src/data/regulation/regulation-loader.ts +56 -0
  133. package/src/data/scanner-constants.ts +46 -0
  134. package/src/data/schemas/schemas-core.ts +140 -0
  135. package/src/data/schemas/schemas-supplementary.ts +211 -0
  136. package/src/data/schemas/schemas.ts +28 -0
  137. package/src/data/security/attack-probes.test.ts +62 -0
  138. package/src/data/security/attack-probes.ts +496 -0
  139. package/src/data/security/eu-ai-act-security.ts +40 -0
  140. package/src/data/security/index.ts +19 -0
  141. package/src/data/security/mitre-atlas.test.ts +43 -0
  142. package/src/data/security/mitre-atlas.ts +93 -0
  143. package/src/data/security/nist-ai-rmf.ts +43 -0
  144. package/src/data/security/owasp-llm-top10.test.ts +60 -0
  145. package/src/data/security/owasp-llm-top10.ts +138 -0
  146. package/src/data/template-registry.ts +53 -0
  147. package/src/data/tool-versions.json +22 -0
  148. package/src/domain/audit/audit-package.test.ts +152 -0
  149. package/src/domain/audit/audit-package.ts +166 -0
  150. package/src/domain/audit/audit-trail.test.ts +121 -0
  151. package/src/domain/audit/audit-trail.ts +174 -0
  152. package/src/domain/audit/index.ts +8 -0
  153. package/src/domain/audit/permissions-matrix.test.ts +136 -0
  154. package/src/domain/audit/permissions-matrix.ts +121 -0
  155. package/src/domain/certification/adversarial/bias-tests.ts +95 -0
  156. package/src/domain/certification/adversarial/evaluators.ts +304 -0
  157. package/src/domain/certification/adversarial/index.ts +11 -0
  158. package/src/domain/certification/adversarial/prompt-injection.ts +103 -0
  159. package/src/domain/certification/adversarial/safety-boundary.ts +132 -0
  160. package/src/domain/certification/aiuc1-readiness.test.ts +236 -0
  161. package/src/domain/certification/aiuc1-readiness.ts +298 -0
  162. package/src/domain/certification/aiuc1-requirements.ts +235 -0
  163. package/src/domain/certification/index.ts +10 -0
  164. package/src/domain/certification/redteam-runner.test.ts +97 -0
  165. package/src/domain/certification/redteam-runner.ts +205 -0
  166. package/src/domain/certification/test-runner.test.ts +232 -0
  167. package/src/domain/certification/test-runner.ts +289 -0
  168. package/src/domain/cost/cost-estimator.test.ts +187 -0
  169. package/src/domain/cost/cost-estimator.ts +133 -0
  170. package/src/domain/disclaimer.test.ts +52 -0
  171. package/src/domain/disclaimer.ts +39 -0
  172. package/src/domain/documents/ai-enricher.test.ts +120 -0
  173. package/src/domain/documents/ai-enricher.ts +159 -0
  174. package/src/domain/documents/document-generator.test.ts +318 -0
  175. package/src/domain/documents/document-generator.ts +239 -0
  176. package/src/domain/documents/index.ts +9 -0
  177. package/src/domain/documents/passport-helpers.ts +25 -0
  178. package/src/domain/documents/policy-generator.test.ts +252 -0
  179. package/src/domain/documents/policy-generator.ts +94 -0
  180. package/src/domain/documents/worker-notification-generator.test.ts +162 -0
  181. package/src/domain/documents/worker-notification-generator.ts +141 -0
  182. package/src/domain/eval/adapters/adapter-port.ts +94 -0
  183. package/src/domain/eval/adapters/adapters.test.ts +303 -0
  184. package/src/domain/eval/adapters/anthropic-adapter.ts +57 -0
  185. package/src/domain/eval/adapters/auto-detect.ts +104 -0
  186. package/src/domain/eval/adapters/create-chat-adapter.ts +106 -0
  187. package/src/domain/eval/adapters/custom-adapter.ts +74 -0
  188. package/src/domain/eval/adapters/http-adapter.ts +66 -0
  189. package/src/domain/eval/adapters/index.ts +7 -0
  190. package/src/domain/eval/adapters/ollama-adapter.ts +48 -0
  191. package/src/domain/eval/adapters/openai-adapter.ts +58 -0
  192. package/src/domain/eval/adapters/with-timeout.ts +25 -0
  193. package/src/domain/eval/conformity-score.test.ts +161 -0
  194. package/src/domain/eval/conformity-score.ts +135 -0
  195. package/src/domain/eval/eval-constants.ts +55 -0
  196. package/src/domain/eval/eval-evidence.test.ts +85 -0
  197. package/src/domain/eval/eval-evidence.ts +103 -0
  198. package/src/domain/eval/eval-fix-generator.test.ts +421 -0
  199. package/src/domain/eval/eval-fix-generator.ts +205 -0
  200. package/src/domain/eval/eval-passport.test.ts +82 -0
  201. package/src/domain/eval/eval-passport.ts +89 -0
  202. package/src/domain/eval/eval-remediation-report.test.ts +682 -0
  203. package/src/domain/eval/eval-remediation-report.ts +170 -0
  204. package/src/domain/eval/eval-report.ts +108 -0
  205. package/src/domain/eval/eval-runner.test.ts +609 -0
  206. package/src/domain/eval/eval-runner.ts +593 -0
  207. package/src/domain/eval/eval-to-findings.test.ts +293 -0
  208. package/src/domain/eval/eval-to-findings.ts +83 -0
  209. package/src/domain/eval/index.ts +31 -0
  210. package/src/domain/eval/llm-judge.test.ts +139 -0
  211. package/src/domain/eval/llm-judge.ts +168 -0
  212. package/src/domain/eval/remediation-types.ts +90 -0
  213. package/src/domain/eval/security-integration.test.ts +196 -0
  214. package/src/domain/eval/security-integration.ts +136 -0
  215. package/src/domain/eval/types.test.ts +173 -0
  216. package/src/domain/eval/types.ts +244 -0
  217. package/src/domain/eval/verdict-utils.ts +45 -0
  218. package/src/domain/fixer/create-fixer.ts +101 -0
  219. package/src/domain/fixer/diff.ts +70 -0
  220. package/src/domain/fixer/fix-history.ts +23 -0
  221. package/src/domain/fixer/fixer.test.ts +306 -0
  222. package/src/domain/fixer/index.ts +9 -0
  223. package/src/domain/fixer/strategies/bandit-fix.ts +61 -0
  224. package/src/domain/fixer/strategies/bias-testing.ts +49 -0
  225. package/src/domain/fixer/strategies/ci-compliance.ts +57 -0
  226. package/src/domain/fixer/strategies/content-marking.ts +45 -0
  227. package/src/domain/fixer/strategies/cve-upgrade.ts +66 -0
  228. package/src/domain/fixer/strategies/data-governance.ts +65 -0
  229. package/src/domain/fixer/strategies/disclosure.ts +69 -0
  230. package/src/domain/fixer/strategies/doc-code-sync.ts +53 -0
  231. package/src/domain/fixer/strategies/documentation.ts +59 -0
  232. package/src/domain/fixer/strategies/error-handler.ts +63 -0
  233. package/src/domain/fixer/strategies/hitl-gate.ts +67 -0
  234. package/src/domain/fixer/strategies/index.ts +61 -0
  235. package/src/domain/fixer/strategies/kill-switch-test.ts +85 -0
  236. package/src/domain/fixer/strategies/kill-switch.ts +53 -0
  237. package/src/domain/fixer/strategies/license-fix.ts +57 -0
  238. package/src/domain/fixer/strategies/log-retention.ts +40 -0
  239. package/src/domain/fixer/strategies/logging.ts +59 -0
  240. package/src/domain/fixer/strategies/metadata.ts +45 -0
  241. package/src/domain/fixer/strategies/permission-guard.ts +84 -0
  242. package/src/domain/fixer/strategies/record-keeping.ts +69 -0
  243. package/src/domain/fixer/strategies/secret-rotation.ts +52 -0
  244. package/src/domain/fixer/strategies.test.ts +341 -0
  245. package/src/domain/fixer/template-engine.test.ts +64 -0
  246. package/src/domain/fixer/template-engine.ts +38 -0
  247. package/src/domain/fixer/types.ts +88 -0
  248. package/src/domain/frameworks/aiuc1-framework.test.ts +159 -0
  249. package/src/domain/frameworks/aiuc1-framework.ts +126 -0
  250. package/src/domain/frameworks/collect-foundation-metrics.test.ts +96 -0
  251. package/src/domain/frameworks/collect-foundation-metrics.ts +34 -0
  252. package/src/domain/frameworks/eu-ai-act-framework.test.ts +117 -0
  253. package/src/domain/frameworks/eu-ai-act-framework.ts +100 -0
  254. package/src/domain/frameworks/framework-registry.test.ts +91 -0
  255. package/src/domain/frameworks/framework-registry.ts +38 -0
  256. package/src/domain/frameworks/index.ts +8 -0
  257. package/src/domain/frameworks/mitre-atlas-framework.test.ts +53 -0
  258. package/src/domain/frameworks/mitre-atlas-framework.ts +53 -0
  259. package/src/domain/frameworks/owasp-llm-framework.test.ts +77 -0
  260. package/src/domain/frameworks/owasp-llm-framework.ts +54 -0
  261. package/src/domain/frameworks/score-plugin-framework.ts +117 -0
  262. package/src/domain/fria/fria-generator.test.ts +273 -0
  263. package/src/domain/fria/fria-generator.ts +366 -0
  264. package/src/domain/import/promptfoo-importer.test.ts +103 -0
  265. package/src/domain/import/promptfoo-importer.ts +151 -0
  266. package/src/domain/onboarding/guided-onboarding.test.ts +144 -0
  267. package/src/domain/onboarding/guided-onboarding.ts +135 -0
  268. package/src/domain/passport/builder/domain-mapper.ts +9 -0
  269. package/src/domain/passport/builder/manifest-builder.test.ts +546 -0
  270. package/src/domain/passport/builder/manifest-builder.ts +535 -0
  271. package/src/domain/passport/builder/manifest-diff.test.ts +105 -0
  272. package/src/domain/passport/builder/manifest-diff.ts +89 -0
  273. package/src/domain/passport/builder/manifest-files.ts +17 -0
  274. package/src/domain/passport/crypto-signer.test.ts +93 -0
  275. package/src/domain/passport/crypto-signer.ts +157 -0
  276. package/src/domain/passport/discovery/agent-discovery.test.ts +296 -0
  277. package/src/domain/passport/discovery/agent-discovery.ts +325 -0
  278. package/src/domain/passport/discovery/autonomy-analyzer.test.ts +141 -0
  279. package/src/domain/passport/discovery/autonomy-analyzer.ts +113 -0
  280. package/src/domain/passport/discovery/permission-scanner.test.ts +191 -0
  281. package/src/domain/passport/discovery/permission-scanner.ts +414 -0
  282. package/src/domain/passport/export/a2a-mapper.ts +75 -0
  283. package/src/domain/passport/export/aiuc1-mapper.ts +126 -0
  284. package/src/domain/passport/export/export.test.ts +207 -0
  285. package/src/domain/passport/export/index.ts +41 -0
  286. package/src/domain/passport/export/nist-mapper.ts +227 -0
  287. package/src/domain/passport/import/a2a-importer.test.ts +133 -0
  288. package/src/domain/passport/import/a2a-importer.ts +156 -0
  289. package/src/domain/passport/import/index.ts +2 -0
  290. package/src/domain/passport/index.ts +32 -0
  291. package/src/domain/passport/obligation-field-map.test.ts +113 -0
  292. package/src/domain/passport/obligation-field-map.ts +117 -0
  293. package/src/domain/passport/passport-validator.test.ts +156 -0
  294. package/src/domain/passport/passport-validator.ts +126 -0
  295. package/src/domain/passport/scan-to-compliance.test.ts +336 -0
  296. package/src/domain/passport/scan-to-compliance.ts +166 -0
  297. package/src/domain/passport/test-generator.test.ts +93 -0
  298. package/src/domain/passport/test-generator.ts +136 -0
  299. package/src/domain/proxy/index.ts +11 -0
  300. package/src/domain/proxy/json-rpc.test.ts +72 -0
  301. package/src/domain/proxy/json-rpc.ts +53 -0
  302. package/src/domain/proxy/policy-engine.test.ts +259 -0
  303. package/src/domain/proxy/policy-engine.ts +137 -0
  304. package/src/domain/proxy/proxy-bridge.ts +125 -0
  305. package/src/domain/proxy/proxy-interceptor.test.ts +184 -0
  306. package/src/domain/proxy/proxy-interceptor.ts +120 -0
  307. package/src/domain/proxy/proxy-types.ts +35 -0
  308. package/src/domain/registry/compute-agent-score.test.ts +279 -0
  309. package/src/domain/registry/compute-agent-score.ts +162 -0
  310. package/src/domain/reporter/audit-report.test.ts +87 -0
  311. package/src/domain/reporter/audit-report.ts +116 -0
  312. package/src/domain/reporter/badge-generator.test.ts +54 -0
  313. package/src/domain/reporter/badge-generator.ts +40 -0
  314. package/src/domain/reporter/compliance-md.ts +45 -0
  315. package/src/domain/reporter/index.ts +7 -0
  316. package/src/domain/reporter/pdf-renderer.ts +282 -0
  317. package/src/domain/reporter/share.test.ts +92 -0
  318. package/src/domain/reporter/share.ts +80 -0
  319. package/src/domain/scanner/ast/swc-analyzer.test.ts +49 -0
  320. package/src/domain/scanner/ast/swc-analyzer.ts +124 -0
  321. package/src/domain/scanner/attestations.ts +97 -0
  322. package/src/domain/scanner/checks/ai-disclosure.test.ts +90 -0
  323. package/src/domain/scanner/checks/ai-disclosure.ts +54 -0
  324. package/src/domain/scanner/checks/ai-literacy.ts +163 -0
  325. package/src/domain/scanner/checks/behavioral-constraints.test.ts +167 -0
  326. package/src/domain/scanner/checks/behavioral-constraints.ts +86 -0
  327. package/src/domain/scanner/checks/compliance-metadata.ts +63 -0
  328. package/src/domain/scanner/checks/content-marking.ts +74 -0
  329. package/src/domain/scanner/checks/dep-deep-scan.test.ts +318 -0
  330. package/src/domain/scanner/checks/dep-deep-scan.ts +137 -0
  331. package/src/domain/scanner/checks/documentation.test.ts +88 -0
  332. package/src/domain/scanner/checks/documentation.ts +79 -0
  333. package/src/domain/scanner/checks/git-history.test.ts +120 -0
  334. package/src/domain/scanner/checks/git-history.ts +163 -0
  335. package/src/domain/scanner/checks/gpai-systemic-risk.test.ts +84 -0
  336. package/src/domain/scanner/checks/gpai-systemic-risk.ts +98 -0
  337. package/src/domain/scanner/checks/gpai-transparency.ts +94 -0
  338. package/src/domain/scanner/checks/index.ts +28 -0
  339. package/src/domain/scanner/checks/industry/index.ts +40 -0
  340. package/src/domain/scanner/checks/industry/industry.test.ts +287 -0
  341. package/src/domain/scanner/checks/interaction-logging.test.ts +113 -0
  342. package/src/domain/scanner/checks/interaction-logging.ts +142 -0
  343. package/src/domain/scanner/checks/nhi-scanner.test.ts +158 -0
  344. package/src/domain/scanner/checks/nhi-scanner.ts +78 -0
  345. package/src/domain/scanner/checks/passport-completeness.test.ts +127 -0
  346. package/src/domain/scanner/checks/passport-completeness.ts +82 -0
  347. package/src/domain/scanner/checks/passport-presence.test.ts +56 -0
  348. package/src/domain/scanner/checks/passport-presence.ts +78 -0
  349. package/src/domain/scanner/checks/pattern-check-factory.ts +70 -0
  350. package/src/domain/scanner/checks/permission-scanner.test.ts +279 -0
  351. package/src/domain/scanner/checks/permission-scanner.ts +90 -0
  352. package/src/domain/scanner/checks/presence-check-factory.test.ts +124 -0
  353. package/src/domain/scanner/checks/presence-check-factory.ts +275 -0
  354. package/src/domain/scanner/compliance-diff.test.ts +165 -0
  355. package/src/domain/scanner/compliance-diff.ts +138 -0
  356. package/src/domain/scanner/confidence.test.ts +235 -0
  357. package/src/domain/scanner/confidence.ts +156 -0
  358. package/src/domain/scanner/constants.ts +13 -0
  359. package/src/domain/scanner/create-scanner.ts +573 -0
  360. package/src/domain/scanner/cross-layer.test.ts +372 -0
  361. package/src/domain/scanner/cross-layer.ts +232 -0
  362. package/src/domain/scanner/data/ai-packages.ts +82 -0
  363. package/src/domain/scanner/debt-calculator.test.ts +89 -0
  364. package/src/domain/scanner/debt-calculator.ts +111 -0
  365. package/src/domain/scanner/drift.test.ts +191 -0
  366. package/src/domain/scanner/drift.ts +73 -0
  367. package/src/domain/scanner/evidence-store.test.ts +207 -0
  368. package/src/domain/scanner/evidence-store.ts +195 -0
  369. package/src/domain/scanner/evidence.test.ts +104 -0
  370. package/src/domain/scanner/evidence.ts +71 -0
  371. package/src/domain/scanner/external/bandit-runner.test.ts +45 -0
  372. package/src/domain/scanner/external/bandit-runner.ts +90 -0
  373. package/src/domain/scanner/external/checks.ts +321 -0
  374. package/src/domain/scanner/external/dedup.test.ts +79 -0
  375. package/src/domain/scanner/external/dedup.ts +94 -0
  376. package/src/domain/scanner/external/detect-secrets-runner.test.ts +58 -0
  377. package/src/domain/scanner/external/detect-secrets-runner.ts +81 -0
  378. package/src/domain/scanner/external/external-scanner.test.ts +221 -0
  379. package/src/domain/scanner/external/external-scanner.ts +36 -0
  380. package/src/domain/scanner/external/finding-mapper.test.ts +95 -0
  381. package/src/domain/scanner/external/finding-mapper.ts +138 -0
  382. package/src/domain/scanner/external/index.ts +15 -0
  383. package/src/domain/scanner/external/mappings.ts +93 -0
  384. package/src/domain/scanner/external/modelscan-runner.test.ts +35 -0
  385. package/src/domain/scanner/external/modelscan-runner.ts +101 -0
  386. package/src/domain/scanner/external/path-utils.ts +8 -0
  387. package/src/domain/scanner/external/runner-port.ts +45 -0
  388. package/src/domain/scanner/external/semgrep-runner.test.ts +52 -0
  389. package/src/domain/scanner/external/semgrep-runner.ts +94 -0
  390. package/src/domain/scanner/external/types.ts +32 -0
  391. package/src/domain/scanner/finding-attribution.test.ts +444 -0
  392. package/src/domain/scanner/finding-attribution.ts +195 -0
  393. package/src/domain/scanner/finding-explainer.test.ts +157 -0
  394. package/src/domain/scanner/finding-explainer.ts +73 -0
  395. package/src/domain/scanner/fix-diff-builder.test.ts +272 -0
  396. package/src/domain/scanner/fix-diff-builder.ts +477 -0
  397. package/src/domain/scanner/import-graph.test.ts +162 -0
  398. package/src/domain/scanner/import-graph.ts +198 -0
  399. package/src/domain/scanner/languages/adapter.test.ts +105 -0
  400. package/src/domain/scanner/languages/adapter.ts +239 -0
  401. package/src/domain/scanner/layers/index.ts +24 -0
  402. package/src/domain/scanner/layers/layer1-files.ts +54 -0
  403. package/src/domain/scanner/layers/layer2-docs.test.ts +1207 -0
  404. package/src/domain/scanner/layers/layer2-docs.ts +297 -0
  405. package/src/domain/scanner/layers/layer2-parsing.ts +217 -0
  406. package/src/domain/scanner/layers/layer3-config.test.ts +187 -0
  407. package/src/domain/scanner/layers/layer3-config.ts +279 -0
  408. package/src/domain/scanner/layers/layer3-parsers.ts +73 -0
  409. package/src/domain/scanner/layers/layer4-patterns.test.ts +397 -0
  410. package/src/domain/scanner/layers/layer4-patterns.ts +216 -0
  411. package/src/domain/scanner/layers/layer5-docs.test.ts +99 -0
  412. package/src/domain/scanner/layers/layer5-docs.ts +250 -0
  413. package/src/domain/scanner/layers/layer5-llm.test.ts +146 -0
  414. package/src/domain/scanner/layers/layer5-llm.ts +262 -0
  415. package/src/domain/scanner/layers/layer5-targeted.test.ts +93 -0
  416. package/src/domain/scanner/layers/layer5-targeted.ts +233 -0
  417. package/src/domain/scanner/layers/lockfile-parsers.test.ts +320 -0
  418. package/src/domain/scanner/layers/lockfile-parsers.ts +184 -0
  419. package/src/domain/scanner/regulation-version.test.ts +54 -0
  420. package/src/domain/scanner/regulation-version.ts +23 -0
  421. package/src/domain/scanner/role-filter.test.ts +116 -0
  422. package/src/domain/scanner/role-filter.ts +51 -0
  423. package/src/domain/scanner/rules/banned-packages-data.ts +553 -0
  424. package/src/domain/scanner/rules/banned-packages-sdk.ts +65 -0
  425. package/src/domain/scanner/rules/banned-packages.test.ts +249 -0
  426. package/src/domain/scanner/rules/banned-packages.ts +55 -0
  427. package/src/domain/scanner/rules/comment-filter.test.ts +115 -0
  428. package/src/domain/scanner/rules/comment-filter.ts +297 -0
  429. package/src/domain/scanner/rules/index.ts +9 -0
  430. package/src/domain/scanner/rules/nhi-patterns.test.ts +128 -0
  431. package/src/domain/scanner/rules/nhi-patterns.ts +60 -0
  432. package/src/domain/scanner/rules/pattern-rules.ts +1152 -0
  433. package/src/domain/scanner/sbom.test.ts +136 -0
  434. package/src/domain/scanner/sbom.ts +103 -0
  435. package/src/domain/scanner/scan-cache.test.ts +136 -0
  436. package/src/domain/scanner/scan-cache.ts +115 -0
  437. package/src/domain/scanner/scanner.test.ts +125 -0
  438. package/src/domain/scanner/score-calculator.test.ts +363 -0
  439. package/src/domain/scanner/score-calculator.ts +189 -0
  440. package/src/domain/scanner/security-score.test.ts +107 -0
  441. package/src/domain/scanner/security-score.ts +116 -0
  442. package/src/domain/scanner/source-filter.ts +24 -0
  443. package/src/domain/scanner/validators.ts +223 -0
  444. package/src/domain/shared/compliance-constants.ts +48 -0
  445. package/src/domain/shared/disclosure-patterns.ts +16 -0
  446. package/src/domain/shared/index.ts +6 -0
  447. package/src/domain/shared/parse-dependencies.ts +21 -0
  448. package/src/domain/supply-chain/dependency-analyzer.ts +138 -0
  449. package/src/domain/supply-chain/index.ts +3 -0
  450. package/src/domain/supply-chain/supply-chain.test.ts +211 -0
  451. package/src/domain/supply-chain/types.ts +32 -0
  452. package/src/domain/whatif/config-fixer.ts +187 -0
  453. package/src/domain/whatif/index.ts +6 -0
  454. package/src/domain/whatif/scenario-engine.ts +121 -0
  455. package/src/domain/whatif/simulate-actions.test.ts +161 -0
  456. package/src/domain/whatif/simulate-actions.ts +114 -0
  457. package/src/domain/whatif/whatif.test.ts +135 -0
  458. package/src/e2e/gaps-e2e.test.ts +259 -0
  459. package/src/e2e/smoke.test.ts +101 -0
  460. package/src/hooks/hooks-export.test.ts +81 -0
  461. package/src/hooks/installer.ts +113 -0
  462. package/src/http/cors.test.ts +38 -0
  463. package/src/http/create-router.ts +259 -0
  464. package/src/http/routes/agent.route.ts +380 -0
  465. package/src/http/routes/audit.route.ts +66 -0
  466. package/src/http/routes/badge.route.ts +23 -0
  467. package/src/http/routes/cert.route.ts +66 -0
  468. package/src/http/routes/chat.route.ts +228 -0
  469. package/src/http/routes/cost.route.ts +33 -0
  470. package/src/http/routes/debt.route.ts +29 -0
  471. package/src/http/routes/disclaimer.route.ts +64 -0
  472. package/src/http/routes/eval.route.ts +161 -0
  473. package/src/http/routes/events.route.test.ts +108 -0
  474. package/src/http/routes/events.route.ts +71 -0
  475. package/src/http/routes/external-scan.route.ts +24 -0
  476. package/src/http/routes/file.route.ts +54 -0
  477. package/src/http/routes/fix.route.ts +219 -0
  478. package/src/http/routes/frameworks.route.test.ts +66 -0
  479. package/src/http/routes/frameworks.route.ts +36 -0
  480. package/src/http/routes/git.route.ts +27 -0
  481. package/src/http/routes/guided-onboarding.route.ts +65 -0
  482. package/src/http/routes/import.route.ts +64 -0
  483. package/src/http/routes/jurisdiction.route.ts +22 -0
  484. package/src/http/routes/obligations.route.test.ts +122 -0
  485. package/src/http/routes/obligations.route.ts +110 -0
  486. package/src/http/routes/onboarding.route.ts +53 -0
  487. package/src/http/routes/provider.route.ts +42 -0
  488. package/src/http/routes/proxy.route.ts +40 -0
  489. package/src/http/routes/redteam.route.ts +84 -0
  490. package/src/http/routes/report.route.ts +29 -0
  491. package/src/http/routes/scan.route.ts +104 -0
  492. package/src/http/routes/share.route.ts +44 -0
  493. package/src/http/routes/shell.route.ts +27 -0
  494. package/src/http/routes/status.route.ts +66 -0
  495. package/src/http/routes/supply-chain.route.ts +121 -0
  496. package/src/http/routes/sync.route.ts +328 -0
  497. package/src/http/routes/tools.route.ts +29 -0
  498. package/src/http/routes/whatif.route.ts +96 -0
  499. package/src/http/utils/validation.ts +31 -0
  500. package/src/index.ts +1 -0
  501. package/src/infra/bundle-fetcher.ts +77 -0
  502. package/src/infra/cache-storage.ts +34 -0
  503. package/src/infra/event-bus.ts +31 -0
  504. package/src/infra/file-collector.ts +61 -0
  505. package/src/infra/file-ops-adapter.ts +95 -0
  506. package/src/infra/file-watcher.test.ts +90 -0
  507. package/src/infra/file-watcher.ts +106 -0
  508. package/src/infra/git-adapter.ts +93 -0
  509. package/src/infra/git-history-adapter.ts +41 -0
  510. package/src/infra/headless-browser.ts +178 -0
  511. package/src/infra/llm-adapter.test.ts +83 -0
  512. package/src/infra/llm-adapter.ts +86 -0
  513. package/src/infra/logger.ts +27 -0
  514. package/src/infra/project-config.test.ts +74 -0
  515. package/src/infra/project-config.ts +35 -0
  516. package/src/infra/rate-limiter.test.ts +36 -0
  517. package/src/infra/rate-limiter.ts +34 -0
  518. package/src/infra/retry.ts +46 -0
  519. package/src/infra/saas-client.ts +123 -0
  520. package/src/infra/search-adapter.ts +113 -0
  521. package/src/infra/shell-adapter.ts +68 -0
  522. package/src/infra/tool-manager.test.ts +99 -0
  523. package/src/infra/tool-manager.ts +197 -0
  524. package/src/llm/agents/agent-modes.test.ts +44 -0
  525. package/src/llm/agents/modes.ts +68 -0
  526. package/src/llm/routing/cost-routing.test.ts +37 -0
  527. package/src/llm/routing/cost-tracker.ts +74 -0
  528. package/src/llm/routing/model-routing.test.ts +79 -0
  529. package/src/llm/routing/model-routing.ts +38 -0
  530. package/src/llm/routing/pricing.ts +19 -0
  531. package/src/llm/sse-protocol.ts +77 -0
  532. package/src/llm/tool-definitions.ts +83 -0
  533. package/src/llm/tool-executors.ts +80 -0
  534. package/src/llm/tools/types.ts +13 -0
  535. package/src/mcp/create-mcp-stack.ts +82 -0
  536. package/src/mcp/handlers.ts +245 -0
  537. package/src/mcp/index.ts +28 -0
  538. package/src/mcp/mcp-server.test.ts +80 -0
  539. package/src/mcp/server.ts +79 -0
  540. package/src/mcp/tools.ts +48 -0
  541. package/src/onboarding/auto-detect.ts +164 -0
  542. package/src/onboarding/onboarding.test.ts +89 -0
  543. package/src/onboarding/profile.ts +169 -0
  544. package/src/onboarding/questions.ts +112 -0
  545. package/src/onboarding/wizard.ts +66 -0
  546. package/src/output/github-issue.ts +32 -0
  547. package/src/output/json-output.ts +67 -0
  548. package/src/ports/browser.port.ts +23 -0
  549. package/src/ports/events.port.ts +28 -0
  550. package/src/ports/llm.port.ts +23 -0
  551. package/src/ports/logger.port.ts +6 -0
  552. package/src/ports/process.port.ts +6 -0
  553. package/src/ports/scanner.port.ts +15 -0
  554. package/src/server.ts +134 -0
  555. package/src/services/badge-service.ts +67 -0
  556. package/src/services/chat-service.test.ts +162 -0
  557. package/src/services/chat-service.ts +152 -0
  558. package/src/services/cost-service.ts +52 -0
  559. package/src/services/debt-service.ts +65 -0
  560. package/src/services/eval-integration.test.ts +132 -0
  561. package/src/services/eval-service.test.ts +373 -0
  562. package/src/services/eval-service.ts +463 -0
  563. package/src/services/external-scan-service.ts +60 -0
  564. package/src/services/file-service.ts +37 -0
  565. package/src/services/fix-service.test.ts +470 -0
  566. package/src/services/fix-service.ts +648 -0
  567. package/src/services/framework-service.test.ts +159 -0
  568. package/src/services/framework-service.ts +67 -0
  569. package/src/services/onboarding-service.ts +165 -0
  570. package/src/services/passport-audit.ts +244 -0
  571. package/src/services/passport-documents.ts +258 -0
  572. package/src/services/passport-service-utils.ts +72 -0
  573. package/src/services/passport-service.test.ts +251 -0
  574. package/src/services/passport-service.ts +339 -0
  575. package/src/services/proxy-service.ts +81 -0
  576. package/src/services/report-service.ts +72 -0
  577. package/src/services/scan-service.test.ts +470 -0
  578. package/src/services/scan-service.ts +335 -0
  579. package/src/services/share-service.ts +108 -0
  580. package/src/services/shared/backup.ts +23 -0
  581. package/src/services/status-service.ts +38 -0
  582. package/src/services/undo-service.test.ts +190 -0
  583. package/src/services/undo-service.ts +144 -0
  584. package/src/test-helpers/factories.ts +116 -0
  585. package/src/types/common.schemas.ts +147 -0
  586. package/src/types/common.types.ts +292 -0
  587. package/src/types/contract.test.ts +217 -0
  588. package/src/types/errors.ts +52 -0
  589. package/src/types/framework.types.ts +87 -0
  590. package/src/types/passport-schemas.ts +241 -0
  591. package/src/types/passport.types.ts +296 -0
  592. package/src/version.ts +1 -0
  593. package/tsconfig.json +20 -0
  594. package/vitest.config.ts +9 -0
@@ -0,0 +1,287 @@
1
+ # AI System Technical Documentation
2
+
3
+ > **Regulation**: EU AI Act (Regulation (EU) 2024/1689), Article 11 / Annex IV
4
+ > **Obligation**: OBL-005 — Technical Documentation
5
+ > **For**: Providers of High-Risk AI Systems
6
+ > **Deadline**: August 2, 2026
7
+ > **Document ID**: TDD-[YYYY]-[NNN]
8
+
9
+ <!-- GUIDANCE: Art. 11 requires technical documentation to be drawn up BEFORE the system
10
+ is placed on the market or put into service. It must be kept up to date. The
11
+ documentation shall follow Annex IV structure (sections 1-8). -->
12
+
13
+ ---
14
+
15
+ ## 1. General Description (Annex IV §1)
16
+
17
+ <!-- GUIDANCE: Annex IV(1) requires a complete system identification. The "intended
18
+ purpose" must match the provider's declaration — any deviation requires re-assessment.
19
+ Include ALL hardware/software dependencies, not just primary components.
20
+ Example: "AI-CV-Screener v2.3, requires CUDA 12.0, Python 3.11, deployed on AWS
21
+ eu-west-1, interacts with ATS via REST API." -->
22
+
23
+ | Field | Value |
24
+ |-------|-------|
25
+ | AI System | [AI System Name] |
26
+ | Provider | [Company Name] |
27
+ | Version | [X.Y] |
28
+ | Risk Class | [Risk Class] |
29
+ | Document ID | TDD-[YYYY]-[NNN] |
30
+ | Created | [Date] |
31
+ | Last Review | [Date] |
32
+
33
+ ### 1.1 System Identification
34
+
35
+ - **System name**: [AI System Name]
36
+ - **Version / unique identifier**: [X.Y]
37
+ - **Provider**: [Company Name], [Address], [Contact]
38
+ - **Intended purpose**: [Description]
39
+ - **Date of first placing on market / putting into service**: [Date]
40
+ - **EU database registration reference** (Art. 71): [Reference]
41
+
42
+ ### 1.2 Hardware and Software Environment
43
+
44
+ | Component | Name | Version | Role |
45
+ |-----------|------|---------|------|
46
+ | Operating system | | | |
47
+ | Runtime | | | |
48
+ | GPU / Accelerator | | | |
49
+ | Framework / SDK | | | |
50
+
51
+ ### 1.3 System Interactions
52
+
53
+ | External System | Interface | Data Exchanged | Direction |
54
+ |----------------|-----------|---------------|-----------|
55
+ | | API / File / Stream | | In / Out / Both |
56
+
57
+ ---
58
+
59
+ ## 2. Detailed Description of System Elements (Annex IV §2)
60
+
61
+ <!-- GUIDANCE: Annex IV(2) requires sufficient detail for a third party to understand
62
+ how the system works. Document architecture decisions and their rationale — not just
63
+ what was built, but WHY. Include training data characteristics (size, sources,
64
+ demographics, known limitations). -->
65
+
66
+ ### 2.1 Development Process
67
+
68
+ | Aspect | Description |
69
+ |--------|-------------|
70
+ | Development methodology | |
71
+ | Design specifications | |
72
+ | Architecture decisions | |
73
+ | Key design rationale | |
74
+
75
+ ### 2.2 Data Requirements
76
+
77
+ | Dataset | Purpose | Size | Sources | Demographics | Known Limitations |
78
+ |---------|---------|------|---------|-------------|-------------------|
79
+ | Training | | | | | |
80
+ | Validation | | | | | |
81
+ | Test | | | | | |
82
+
83
+ ### 2.3 Training Methodology
84
+
85
+ | Aspect | Description |
86
+ |--------|-------------|
87
+ | Algorithm(s) used | |
88
+ | Optimization technique | |
89
+ | Hyperparameters | |
90
+ | Training procedure | |
91
+ | Computational resources | |
92
+ | Training duration | |
93
+
94
+ ---
95
+
96
+ ## 3. Monitoring, Functioning and Control (Annex IV §3)
97
+
98
+ <!-- GUIDANCE: Annex IV(3) requires documentation of capabilities AND limitations.
99
+ Be specific about what the system cannot do. Define accuracy metrics with confidence
100
+ intervals, not single numbers. Art. 14 human oversight measures belong here. -->
101
+
102
+ ### 3.1 System Capabilities
103
+
104
+ | Capability | Description | Confidence Level |
105
+ |-----------|-------------|------------------|
106
+ | | | |
107
+
108
+ ### 3.2 Known Limitations
109
+
110
+ | # | Limitation | Impact | Conditions | Workaround |
111
+ |---|-----------|--------|------------|------------|
112
+ | 1 | | | | |
113
+
114
+ ### 3.3 Human Oversight Measures (Art. 14)
115
+
116
+ | Measure | Description | Responsible |
117
+ |---------|-------------|-------------|
118
+ | Output review | | |
119
+ | Override mechanism | | |
120
+ | Intervention procedure | | |
121
+ | Stop/disable capability | | |
122
+
123
+ ### 3.4 Input Data Specifications
124
+
125
+ | Input | Format | Constraints | Validation |
126
+ |-------|--------|------------|-----------|
127
+ | | | | |
128
+
129
+ ---
130
+
131
+ ## 4. Validation and Testing (Annex IV §4)
132
+
133
+ <!-- GUIDANCE: Annex IV(4) requires information about the validation and testing
134
+ procedures used, including information about the validation and testing data used
135
+ and their main characteristics; metrics used to measure accuracy, robustness, and
136
+ compliance; potentially discriminatory impacts; test logs and test reports. -->
137
+
138
+ ### 4.1 Testing Strategy
139
+
140
+ | Test Phase | Scope | Methodology | Tools |
141
+ |-----------|-------|-------------|-------|
142
+ | Pre-market (Art. 9(7)) | | | |
143
+ | Real-world conditions (Art. 9(8)) | | | |
144
+ | Post-deployment | | | |
145
+
146
+ ### 4.2 Test Datasets
147
+
148
+ | Dataset | Purpose | Size | Source | Representativeness | Known Biases |
149
+ |---------|---------|------|--------|-------------------|-------------|
150
+ | | Validation | | | | |
151
+ | | Test | | | | |
152
+ | | Adversarial | | | | |
153
+
154
+ ### 4.3 Accuracy Metrics
155
+
156
+ | Metric | Target | Result | Confidence Interval | Dataset | Date |
157
+ |--------|--------|--------|--------------------|---------|----- |
158
+ | Accuracy | | | | | |
159
+ | Precision | | | | | |
160
+ | Recall | | | | | |
161
+ | F1 Score | | | | | |
162
+ | AUC-ROC | | | | | |
163
+
164
+ ### 4.4 Discriminatory Impact Testing
165
+
166
+ <!-- GUIDANCE: Annex IV(4) specifically requires testing for potentially discriminatory
167
+ impacts. Test across protected characteristics (age, gender, ethnicity, disability). -->
168
+
169
+ | Protected Group | Metric | Group Result | Overall Result | Disparity | Acceptable? |
170
+ |----------------|--------|-------------|---------------|-----------|-------------|
171
+ | | | | | | |
172
+
173
+ ### 4.5 Test Logs and Reports
174
+
175
+ | Test Run | Date | Tester | Config | Pass/Fail | Report Location |
176
+ |----------|------|--------|--------|-----------|----------------|
177
+ | | | | | | |
178
+
179
+ ---
180
+
181
+ ## 5. Accuracy, Robustness and Cybersecurity (Annex IV §5)
182
+
183
+ <!-- GUIDANCE: Annex IV(5) requires a description of the measures put in place for
184
+ accuracy (Art. 15(1)), robustness (Art. 15(4)), and cybersecurity (Art. 15(5)).
185
+ Include technical and organisational measures. -->
186
+
187
+ ### 5.1 Accuracy Measures (Art. 15(1))
188
+
189
+ | Measure | Description | Status |
190
+ |---------|-------------|--------|
191
+ | Accuracy targets | | |
192
+ | Measurement methodology | | |
193
+ | Performance baselines | | |
194
+ | Degradation detection | | |
195
+
196
+ ### 5.2 Robustness Measures (Art. 15(4))
197
+
198
+ | Measure | Description | Status |
199
+ |---------|-------------|--------|
200
+ | Error handling | | |
201
+ | Fallback mechanisms | | |
202
+ | Redundancy | | |
203
+ | Adversarial resilience | | |
204
+ | Input perturbation tolerance | | |
205
+
206
+ ### 5.3 Cybersecurity Measures (Art. 15(5))
207
+
208
+ | Measure | Description | Status |
209
+ |---------|-------------|--------|
210
+ | Data poisoning prevention | | |
211
+ | Model manipulation protection | | |
212
+ | Adversarial input detection | | |
213
+ | Confidentiality safeguards | | |
214
+ | Access control | | |
215
+ | Audit logging | | |
216
+
217
+ ---
218
+
219
+ ## 6. Risk Management System (Annex IV §2(e))
220
+
221
+ <!-- GUIDANCE: Art. 9 requires a continuous, iterative risk management process.
222
+ Reference your Art. 9 risk management documentation by ID. List residual risks
223
+ that cannot be fully mitigated and explain why they are acceptable. -->
224
+
225
+ - **Risk management document reference**: [RMS-YYYY-NNN]
226
+ - **Known risks and mitigation measures**: see Risk Management System document
227
+ - **Residual risk assessment**: see Risk Management System document
228
+
229
+ ---
230
+
231
+ ## 7. Changes Throughout Lifecycle (Annex IV §6)
232
+
233
+ <!-- GUIDANCE: Annex IV(6) requires a version history with rationale for each change.
234
+ Assess whether each change requires a new conformity assessment. Substantial
235
+ modifications (Art. 6(1)(b)) trigger re-assessment. -->
236
+
237
+ | Version | Date | Change Description | Rationale | Substantial Modification? | Re-assessment? |
238
+ |---------|------|-------------------|-----------|--------------------------|---------------|
239
+ | | | Initial version | N/A | N/A | N/A |
240
+
241
+ ---
242
+
243
+ ## 8. Standards and Conformity (Annex IV §7-8)
244
+
245
+ <!-- GUIDANCE: List specific harmonised standards (e.g., ISO/IEC 42001, ISO/IEC 23894)
246
+ or common specifications. State the conformity assessment route (Annex VI internal
247
+ control or Annex VII with notified body). -->
248
+
249
+ ### 8.1 Applied Standards
250
+
251
+ | Standard | Scope | Status | Certification Date |
252
+ |----------|-------|--------|--------------------|
253
+ | ISO/IEC 42001 | AI Management System | | |
254
+ | ISO/IEC 23894 | AI Risk Management | | |
255
+
256
+ ### 8.2 Conformity Assessment
257
+
258
+ | Aspect | Value |
259
+ |--------|-------|
260
+ | Assessment route | Annex VI (internal) / Annex VII (notified body) |
261
+ | Notified body (if applicable) | |
262
+ | Assessment date | |
263
+ | EU Declaration of Conformity ref | [DOC-YYYY-NNN] |
264
+
265
+ ---
266
+
267
+ ## 9. Post-Market Monitoring Plan (Art. 72)
268
+
269
+ <!-- GUIDANCE: Art. 72 requires proportionate post-market monitoring. Define specific
270
+ KPIs, monitoring frequency, and thresholds that trigger corrective action. -->
271
+
272
+ | Activity | Frequency | KPI | Threshold | Owner |
273
+ |----------|-----------|-----|-----------|-------|
274
+ | Accuracy review | | | | |
275
+ | Fairness audit | | | | |
276
+ | Incident review | | | | |
277
+ | Full re-validation | | | | |
278
+
279
+ ---
280
+
281
+ ## Sign-off
282
+
283
+ | Role | Name | Signature | Date |
284
+ |------|------|-----------|------|
285
+ | Technical Lead | | | |
286
+ | Quality Manager | | | |
287
+ | Compliance Officer | | | |
@@ -0,0 +1,143 @@
1
+ # Worker Notification of High-Risk AI Use
2
+
3
+ > **Regulation**: EU AI Act (Regulation (EU) 2024/1689), Article 26(7)
4
+ > **Obligation**: OBL-012 — Inform Workers and Representatives
5
+ > **For**: Deployers (employers using high-risk AI in the workplace)
6
+ > **Deadline**: August 2, 2026
7
+ > **Document ID**: WRK-[YYYY]-[NNN]
8
+
9
+ <!-- GUIDANCE: Art. 26(7) requires notification to workers AND their representatives
10
+ before deployment of high-risk AI in the workplace. Check national transposition
11
+ for additional requirements (e.g., Germany: Betriebsrat, France: CSE). -->
12
+
13
+ ---
14
+
15
+ ## 1. Document Control
16
+
17
+ | Field | Value |
18
+ |-------|-------|
19
+ | AI System | [AI System Name] |
20
+ | Provider | [Company Name] |
21
+ | Version | [X.Y] |
22
+ | Created | [Date] |
23
+ | Notification Date | [Date] |
24
+ | Approved By | [Name, Title] |
25
+
26
+ ---
27
+
28
+ ## 2. Notification Scope
29
+
30
+ ### 2.1 System Being Deployed
31
+
32
+ | Field | Value |
33
+ |-------|-------|
34
+ | System name | [AI System Name] |
35
+ | Provider | [Company Name] |
36
+ | Purpose | |
37
+ | Deployment date | |
38
+ | Risk class | [Risk Class] |
39
+
40
+ ### 2.2 How the System Works
41
+
42
+ <!-- GUIDANCE: Use plain, non-technical language. Explain specifically HOW the system
43
+ affects work, not just THAT it does. Reference Art. 86 right to explanation. -->
44
+
45
+ [Plain language description: what data it processes, what decisions/recommendations it makes, how it affects workers]
46
+
47
+ ### 2.3 How It Affects Workers
48
+
49
+ [Specific description of impact on day-to-day work, e.g., "The system will assist in evaluating performance reviews but all final decisions remain with your manager"]
50
+
51
+ ---
52
+
53
+ ## 3. Affected Workers
54
+
55
+ | # | Department / Role | Number of Workers | Impact Type | Notification Method |
56
+ |---|------------------|-------------------|-------------|-------------------|
57
+ | 1 | | | Direct / Indirect | Email / In-person / Portal |
58
+
59
+ ---
60
+
61
+ ## 4. Worker Rights
62
+
63
+ <!-- GUIDANCE: Art. 26(7) + Art. 86 rights must be communicated clearly. -->
64
+
65
+ - Human oversight: All AI-assisted decisions are reviewed by [named person/role] before implementation
66
+ - Right to explanation: You may request an explanation of any AI-influenced decision affecting you (Article 86)
67
+ - Complaint channel: Lodge a complaint with [internal contact] or the national market surveillance authority
68
+ - Data protection: Personal data is processed in accordance with GDPR — see privacy notice [link/reference]
69
+ - Contact: [Name, Title, Email, Phone]
70
+
71
+ ---
72
+
73
+ ## 5. Timeline
74
+
75
+ | Date | Action | Status |
76
+ |------|--------|--------|
77
+ | | Notification drafted | |
78
+ | | Works council / union consulted | |
79
+ | | Individual notifications sent | |
80
+ | | Acknowledgment deadline | |
81
+ | | System deployment date | |
82
+
83
+ ---
84
+
85
+ ## 6. Delivery Tracking
86
+
87
+ <!-- GUIDANCE: Track delivery and acknowledgment for compliance evidence.
88
+ If a worker refuses to sign, document the refusal — the obligation is
89
+ to inform, not to obtain consent. -->
90
+
91
+ ### 6.1 Individual Notifications
92
+
93
+ | # | Worker / Group | Method | Sent Date | Delivered? | Acknowledged? | Ack Date |
94
+ |---|---------------|--------|-----------|-----------|--------------|----------|
95
+ | 1 | | Email / Portal / In-person | | Yes/No | Yes/No/Refused | |
96
+
97
+ ### 6.2 Works Council / Union Notification
98
+
99
+ | Representative Body | Contact Person | Sent Date | Response Date | Outcome |
100
+ |---------------------|---------------|-----------|--------------|---------|
101
+ | | | | | Acknowledged / Consultation requested |
102
+
103
+ ### 6.3 Delivery Summary
104
+
105
+ | Metric | Count |
106
+ |--------|-------|
107
+ | Total workers to notify | |
108
+ | Notifications sent | |
109
+ | Acknowledgments received | |
110
+ | Refusals documented | |
111
+ | Pending | |
112
+
113
+ ---
114
+
115
+ ## 7. Acknowledgment Form
116
+
117
+ - [ ] I acknowledge receipt of this notification about AI system deployment
118
+ - [ ] I have been informed of my rights under Art. 86 EU AI Act
119
+ - Employee name: _________________
120
+ - Department: _________________
121
+ - Date: _________________
122
+ - Signature: _________________
123
+
124
+ ---
125
+
126
+ ## 8. National Requirements
127
+
128
+ <!-- GUIDANCE: Check national transposition requirements. Some Member States may require
129
+ additional consultation periods, specific notification formats, or works council approval. -->
130
+
131
+ | Member State | Additional Requirement | Addressed? |
132
+ |-------------|----------------------|-----------|
133
+ | | | Yes/No |
134
+
135
+ ---
136
+
137
+ ## Sign-off
138
+
139
+ | Role | Name | Signature | Date |
140
+ |------|------|-----------|------|
141
+ | HR Manager | | | |
142
+ | Works Council Representative | | | |
143
+ | Compliance Officer | | | |
@@ -0,0 +1,214 @@
1
+ # AI Usage Policy — Biometrics / Identification
2
+
3
+ | Field | Value |
4
+ |-------|-------|
5
+ | Policy Title | AI Usage Policy — Biometrics / Identification |
6
+ | Organization | [Organization] |
7
+ | Date | [Date] |
8
+ | Version | [Version] |
9
+ | AI System Name | [AI System Name] |
10
+ | Risk Class | [Risk Class] |
11
+
12
+ ## 1. Purpose and Scope
13
+ <!-- GUIDANCE: Biometric AI is always high-risk under Annex III §1. Clearly
14
+ distinguish between identification (one-to-many) and verification (one-to-one),
15
+ as Art. 5 prohibits certain real-time remote biometric identification uses.
16
+ Example: "Covers: employee access control (face verification, one-to-one),
17
+ visitor management (badge + face match), excludes real-time remote biometric
18
+ identification in publicly accessible spaces." -->
19
+
20
+ This policy governs the use of [AI System Name] within [Organization]'s biometric processing operations. It establishes requirements for lawful, fair and transparent use of AI in biometric identification, verification, and categorisation, in accordance with the EU AI Act (Regulation 2024/1689).
21
+
22
+ This policy applies to all personnel involved in deploying, operating, supervising, or being subject to biometric AI systems, including security staff, IT administrators, data protection officers, and all individuals whose biometric data is processed.
23
+
24
+ ## 2. Applicable Legislation
25
+ <!-- GUIDANCE: Biometric AI sits at the intersection of AI Act high-risk
26
+ requirements, GDPR Art. 9 (biometric data as special category), and potentially
27
+ national law enforcement directives. Art. 5 prohibitions apply to certain uses.
28
+ Example: "Primary: AI Act Annex III §1 (high-risk biometric systems);
29
+ Art. 5(1)(d)-(h) prohibitions; GDPR Art. 9(1) and Art. 35 DPIA mandatory;
30
+ national implementations of Law Enforcement Directive 2016/680." -->
31
+
32
+ - **EU AI Act** — Annex III §1: Biometric identification and categorisation of natural persons
33
+ - **Art. 5(1)(d)** — Prohibition on untargeted scraping of facial images from internet or CCTV
34
+ - **Art. 5(1)(g)** — Prohibition on biometric categorisation inferring sensitive attributes (race, political opinion, religion, sexual orientation)
35
+ - **Art. 5(1)(h)** — Prohibition on real-time remote biometric identification in publicly accessible spaces (exceptions: targeted victim search, prevention of specific imminent threat, serious crime suspects)
36
+ - **Art. 6(2)** — High-risk AI system classification
37
+ - **Art. 9** — Risk management system requirements
38
+ - **Art. 10** — Data governance (biometric data quality and representativeness)
39
+ - **Art. 14** — Human oversight measures
40
+ - **Art. 26** — Obligations of deployers of high-risk AI systems
41
+ - **GDPR** — Art. 9 (special categories), Art. 35 (DPIA mandatory), Art. 22 (automated decision-making)
42
+ - **EU Charter of Fundamental Rights** — Art. 7 (private life), Art. 8 (data protection), Art. 21 (non-discrimination)
43
+
44
+ ## 3. AI System Description
45
+ <!-- GUIDANCE: Specify the biometric modality (face, fingerprint, iris, voice,
46
+ gait, keystroke). Distinguish identification (1:N) from verification (1:1).
47
+ State operating environment (indoor/outdoor, lighting, distance). Example:
48
+ "Face verification (1:1) for employee building access. Infrared camera at 0.5-1m
49
+ distance, controlled indoor lighting. Template stored on smart card, never in
50
+ central database. No emotion recognition, no categorisation." -->
51
+
52
+ - System name: [AI System Name]
53
+ - Description: [Description]
54
+ - Provider: [Provider]
55
+ - Model ID: [Model ID]
56
+ - Biometric modality: [face / fingerprint / iris / voice / gait / multimodal]
57
+ - Processing type: [identification (1:N) / verification (1:1) / categorisation]
58
+ - Autonomy level: [Autonomy Level]
59
+
60
+ ## 4. Risk Classification
61
+ <!-- GUIDANCE: All biometric identification systems are high-risk under Annex III §1.
62
+ Verify Art. 5 prohibitions do not apply. Document why system does NOT constitute
63
+ prohibited real-time remote biometric identification. Example: "High-risk under
64
+ Annex III §1(a) (remote biometric identification, non-real-time, law enforcement
65
+ with prior judicial authorisation). Art. 5(1)(h) exception: targeted search for
66
+ missing child per court order DE-2026-BIO-0034." -->
67
+
68
+ This AI system is classified as **[Risk Class]** under the EU AI Act. All biometric identification and categorisation systems are classified as high-risk under Annex III §1.
69
+
70
+ **Art. 5 Prohibition Assessment:**
71
+ - [ ] This system does NOT perform real-time remote biometric identification in publicly accessible spaces
72
+ - [ ] This system does NOT perform untargeted scraping of facial images
73
+ - [ ] This system does NOT perform biometric categorisation to infer sensitive attributes
74
+ - [ ] Art. 5 exception applies: [describe if applicable]
75
+
76
+ ## 5. Data Governance
77
+ <!-- GUIDANCE: Biometric data is GDPR Art. 9 special category. Training datasets
78
+ must be representative across demographics (skin tone, age, gender) to prevent
79
+ discriminatory accuracy. Reference NIST FRVT demographic studies. Example:
80
+ "Training data: 500K face images, Fitzpatrick skin type distribution: I-II 20%,
81
+ III-IV 40%, V-VI 40%. Validated against NIST FRVT for demographic differentials.
82
+ False match rate variation <0.5% across all demographic groups." -->
83
+
84
+ - All biometric data must be processed in compliance with GDPR Art. 9 (special categories)
85
+ - Explicit consent or alternative legal basis (Art. 9(2)) must be documented before processing
86
+ - Training data must be representative across demographic groups (age, gender, ethnicity, skin tone)
87
+ - Accuracy metrics must be disaggregated by demographic group to detect discriminatory performance
88
+ - Biometric templates must be stored with appropriate encryption and access controls
89
+ - Data retention periods must be defined and enforced; biometric data must be deleted when no longer necessary
90
+ - Data provenance and bias audits must be documented
91
+
92
+ ## 6. Human Oversight
93
+ <!-- GUIDANCE: Biometric decisions affecting fundamental rights (access denial,
94
+ law enforcement identification) MUST have human review before action. Define
95
+ escalation for low-confidence matches. Example: "All matches below 95% confidence
96
+ require human verification. All law enforcement identifications require two
97
+ independent human reviewers. Access denial automatically escalated to security
98
+ supervisor for manual override within 5 minutes." -->
99
+
100
+ - Autonomy level: [Autonomy Level]
101
+ - [Human Oversight Description]
102
+ - All biometric identification results must be verified by a qualified operator before any consequential action
103
+ - False match and false non-match scenarios must have defined human override procedures
104
+ - Low-confidence matches must be escalated for manual review
105
+ - The system must support a "stop" function allowing immediate suspension of biometric processing
106
+
107
+ ## 7. Transparency and Disclosure
108
+ <!-- GUIDANCE: Data subjects must be informed of biometric processing BEFORE
109
+ entering the biometric capture zone. Signage must be prominent and multi-lingual.
110
+ Must explain purpose, data controller, retention period, and rights. Example:
111
+ "Signage at all building entrances in EN/DE/FR: 'Facial recognition in use for
112
+ access control. Controller: [Org]. Data retained 24h. Right to object: [contact].'
113
+ Alternative non-biometric access available at reception." -->
114
+
115
+ - Data subjects must be clearly informed before biometric data is captured
116
+ - Prominent signage must be displayed at all points of biometric data capture
117
+ - Information must include: purpose, data controller identity, retention period, rights to object
118
+ - Non-biometric alternatives must be available where feasible (especially for employees and public access)
119
+ - AI-assisted biometric decisions in records must be clearly identified as AI-processed
120
+
121
+ ## 8. Bias and Fairness Assessment
122
+ <!-- GUIDANCE: Biometric AI has documented demographic bias risks (NIST FRVT 2019:
123
+ false match rates 10-100x higher for certain demographics). Mandatory to test
124
+ across Fitzpatrick skin types, age groups, gender. Example: "Quarterly bias audit:
125
+ FMR/FNMR by Fitzpatrick type, age bracket (18-30, 31-50, 51+), gender. Maximum
126
+ allowed differential: FNMR variance <2x across all groups. Last audit: Q1-2026,
127
+ variance 1.3x — PASS." -->
128
+
129
+ - Accuracy metrics (FMR, FNMR, FRR, FAR) must be measured and reported per demographic group
130
+ - Maximum acceptable accuracy differential between demographic groups: [define threshold]
131
+ - Bias audits must be conducted at least quarterly using representative test datasets
132
+ - Results must be documented and shared with the DPO and oversight committee
133
+ - Corrective actions must be implemented if discriminatory performance is detected
134
+
135
+ ## 9. Art. 5 Compliance Checklist
136
+ <!-- GUIDANCE: This section is critical for biometric AI. Each Art. 5 prohibition
137
+ must be explicitly assessed and documented. Failure to comply = system must be
138
+ withdrawn immediately. Example: "Art. 5(1)(d) facial scraping: NOT APPLICABLE —
139
+ system uses only enrolled employee photos provided with consent. No internet or
140
+ CCTV scraping. Verified by: DPO audit 2026-01-15." -->
141
+
142
+ | Prohibition | Applies? | Assessment | Verified By | Date |
143
+ |-------------|----------|------------|-------------|------|
144
+ | Art. 5(1)(d) — Untargeted facial scraping | [ ] Yes / [ ] No | [Assessment] | _________________ | _________ |
145
+ | Art. 5(1)(g) — Biometric categorisation (sensitive attributes) | [ ] Yes / [ ] No | [Assessment] | _________________ | _________ |
146
+ | Art. 5(1)(h) — Real-time remote biometric ID (public spaces) | [ ] Yes / [ ] No | [Assessment] | _________________ | _________ |
147
+ | Art. 5(1)(f) — Emotion recognition (workplace/education) | [ ] Yes / [ ] No | [Assessment] | _________________ | _________ |
148
+
149
+ ## 10. Monitoring and Logging
150
+ <!-- GUIDANCE: Biometric systems must log all match attempts (not biometric
151
+ templates themselves — those are special category data). Track accuracy metrics
152
+ in production. Retention must balance accountability vs. GDPR minimisation.
153
+ Example: "Log: timestamp, match result (Y/N), confidence score, camera ID,
154
+ decision (grant/deny/escalate). NO biometric template in logs. Retained 90 days.
155
+ Weekly accuracy dashboard reviewed by security manager." -->
156
+
157
+ - All biometric match attempts must be logged with: timestamp, result, confidence score, operator action
158
+ - Biometric templates and raw biometric data must NOT be included in operational logs
159
+ - System performance must be monitored for accuracy drift and anomalous patterns
160
+ - Monitoring frequency: [continuous/daily/weekly] with security team oversight
161
+ - Logs must be retained for [period] in compliance with GDPR data minimisation
162
+
163
+ ## 11. Incident Response
164
+ <!-- GUIDANCE: Biometric incidents include false identification leading to wrongful
165
+ action, data breaches of biometric data (GDPR Art. 33/34 mandatory notification),
166
+ and system spoofing. Biometric data breaches are irrevocable — compromised
167
+ biometric data cannot be changed. Example: "Biometric data breach: immediate
168
+ containment, GDPR Art. 33 notification to DPA within 72h, Art. 34 notification
169
+ to data subjects if high risk. System suspension until forensic review complete.
170
+ Affected templates revoked and re-enrolled with new liveness detection." -->
171
+
172
+ - Biometric data breaches must be reported to the DPA within 72 hours (GDPR Art. 33)
173
+ - Data subjects must be notified without undue delay if the breach is likely to result in high risk (GDPR Art. 34)
174
+ - False identification leading to adverse action must trigger immediate investigation and remediation
175
+ - The AI system must be suspended if systematic accuracy degradation or spoofing is detected
176
+ - All incidents must be documented with root cause analysis and corrective measures
177
+
178
+ ## 12. Training and Awareness
179
+ <!-- GUIDANCE: Operators must understand biometric accuracy limitations, false
180
+ match consequences, and escalation procedures. Include anti-bias training.
181
+ Example: "8-hour training: biometric fundamentals, system operation, false
182
+ match/non-match handling, demographic bias awareness, override procedures,
183
+ GDPR rights of data subjects. Annual recertification." -->
184
+
185
+ - All operators must receive training on biometric system operation and limitations
186
+ - Training must cover: accuracy metrics interpretation, false match handling, bias awareness, data subject rights
187
+ - Competency assessment must be completed before independent system operation
188
+ - Refresher training must be provided at least annually and upon significant system updates
189
+
190
+ ## 13. Review Schedule
191
+ <!-- GUIDANCE: Biometric technology evolves rapidly (presentation attacks,
192
+ deepfakes). Frequent review needed. Include technology horizon scanning.
193
+ Example: "Quarterly: accuracy metrics + bias audit. Semi-annual: presentation
194
+ attack detection effectiveness. Annual: full system re-evaluation including
195
+ new attack vectors (deepfakes, 3D masks). Immediate: upon Art. 5 prohibition
196
+ scope changes or new EDPB guidance." -->
197
+
198
+ - This policy shall be reviewed at least semi-annually and upon any significant change to the AI system
199
+ - Review must incorporate accuracy data, bias audit results, incident reports, and regulatory updates
200
+ - Technology horizon scanning must assess new threats (deepfakes, presentation attacks)
201
+ - Updates must be approved by the DPO and Security Committee
202
+
203
+ ## 14. Approval and Sign-off
204
+ <!-- GUIDANCE: Biometric AI policy requires sign-off from both security leadership
205
+ and data protection. DPO involvement is mandatory (GDPR Art. 9 + Art. 35 DPIA).
206
+ Example: "CISO confirms security adequacy; DPO confirms GDPR Art. 9 compliance
207
+ and DPIA completion; Legal confirms Art. 5 prohibition assessment." -->
208
+
209
+ | Role | Name | Date |
210
+ |------|------|------|
211
+ | Policy Owner | [Approver Name] | [Date] |
212
+ | Chief Information Security Officer | _________________ | _________ |
213
+ | DPO | _________________ | _________ |
214
+ | Legal / Compliance Lead | _________________ | _________ |