@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.
- package/.well-known/ai-compliance.json +16 -0
- package/COMPLIANCE.md +64 -0
- package/data/data-integrity.test.ts +75 -0
- package/data/eval/eval-mappings.json +33 -0
- package/data/llm/model-pricing.json +15 -0
- package/data/llm/model-routing.json +36 -0
- package/data/onboarding/risk-profile.json +17 -0
- package/data/regulations/eu-ai-act/README.md +245 -0
- package/data/regulations/eu-ai-act/applicability-tree.json +160 -0
- package/data/regulations/eu-ai-act/cross-mapping.json +175 -0
- package/data/regulations/eu-ai-act/localization.json +186 -0
- package/data/regulations/eu-ai-act/obligations.json +3981 -0
- package/data/regulations/eu-ai-act/regulation-meta.json +482 -0
- package/data/regulations/eu-ai-act/scoring.json +342 -0
- package/data/regulations/eu-ai-act/technical-requirements.json +2590 -0
- package/data/regulations/eu-ai-act/timeline.json +160 -0
- package/data/regulations/jurisdictions/at.json +15 -0
- package/data/regulations/jurisdictions/be.json +15 -0
- package/data/regulations/jurisdictions/bg.json +15 -0
- package/data/regulations/jurisdictions/cy.json +15 -0
- package/data/regulations/jurisdictions/cz.json +15 -0
- package/data/regulations/jurisdictions/de.json +15 -0
- package/data/regulations/jurisdictions/dk.json +15 -0
- package/data/regulations/jurisdictions/ee.json +15 -0
- package/data/regulations/jurisdictions/es.json +15 -0
- package/data/regulations/jurisdictions/fi.json +15 -0
- package/data/regulations/jurisdictions/fr.json +15 -0
- package/data/regulations/jurisdictions/gr.json +15 -0
- package/data/regulations/jurisdictions/hr.json +15 -0
- package/data/regulations/jurisdictions/hu.json +15 -0
- package/data/regulations/jurisdictions/ie.json +15 -0
- package/data/regulations/jurisdictions/is.json +15 -0
- package/data/regulations/jurisdictions/it.json +15 -0
- package/data/regulations/jurisdictions/li.json +15 -0
- package/data/regulations/jurisdictions/lt.json +15 -0
- package/data/regulations/jurisdictions/lu.json +15 -0
- package/data/regulations/jurisdictions/lv.json +15 -0
- package/data/regulations/jurisdictions/mt.json +15 -0
- package/data/regulations/jurisdictions/nl.json +15 -0
- package/data/regulations/jurisdictions/no.json +15 -0
- package/data/regulations/jurisdictions/pl.json +15 -0
- package/data/regulations/jurisdictions/pt.json +15 -0
- package/data/regulations/jurisdictions/ro.json +15 -0
- package/data/regulations/jurisdictions/se.json +15 -0
- package/data/regulations/jurisdictions/si.json +15 -0
- package/data/regulations/jurisdictions/sk.json +15 -0
- package/data/scanner/check-id-categories.json +81 -0
- package/data/scanner/confidence-params.json +16 -0
- package/data/scanner/limits.json +4 -0
- package/data/schemas/http-contract-sample.json +79 -0
- package/data/schemas/http-contract.json +144 -0
- package/data/semgrep-rules/bare-call.yaml +37 -0
- package/data/semgrep-rules/injection.yaml +73 -0
- package/data/semgrep-rules/missing-error-handling.yaml +58 -0
- package/data/semgrep-rules/unsafe-deser.yaml +65 -0
- package/data/templates/eu-ai-act/ai-literacy.md +184 -0
- package/data/templates/eu-ai-act/art5-screening.md +131 -0
- package/data/templates/eu-ai-act/data-governance.md +145 -0
- package/data/templates/eu-ai-act/declaration-of-conformity.md +161 -0
- package/data/templates/eu-ai-act/fria.md +127 -0
- package/data/templates/eu-ai-act/gpai-systemic-risk.md +150 -0
- package/data/templates/eu-ai-act/gpai-transparency.md +166 -0
- package/data/templates/eu-ai-act/incident-report.md +188 -0
- package/data/templates/eu-ai-act/instructions-for-use.md +202 -0
- package/data/templates/eu-ai-act/monitoring-policy.md +110 -0
- package/data/templates/eu-ai-act/qms.md +180 -0
- package/data/templates/eu-ai-act/risk-management-system.md +123 -0
- package/data/templates/eu-ai-act/technical-documentation.md +287 -0
- package/data/templates/eu-ai-act/worker-notification.md +143 -0
- package/data/templates/policies/biometrics-ai-policy.md +214 -0
- package/data/templates/policies/critical-infra-ai-policy.md +228 -0
- package/data/templates/policies/education-ai-policy.md +184 -0
- package/data/templates/policies/finance-ai-policy.md +191 -0
- package/data/templates/policies/healthcare-ai-policy.md +197 -0
- package/data/templates/policies/hr-ai-policy.md +178 -0
- package/data/templates/policies/legal-ai-policy.md +189 -0
- package/data/templates/policies/migration-ai-policy.md +239 -0
- package/engine.log +7 -0
- package/package.json +74 -0
- package/src/composition-root.ts +791 -0
- package/src/data/eval/conformity-tests.test.ts +122 -0
- package/src/data/eval/ct-1-transparency.ts +106 -0
- package/src/data/eval/ct-10-gpai.ts +25 -0
- package/src/data/eval/ct-11-industry.ts +42 -0
- package/src/data/eval/ct-2-oversight.ts +41 -0
- package/src/data/eval/ct-3-explanation.ts +14 -0
- package/src/data/eval/ct-4-bias.ts +83 -0
- package/src/data/eval/ct-5-accuracy.ts +41 -0
- package/src/data/eval/ct-6-robustness.ts +81 -0
- package/src/data/eval/ct-7-prohibited.ts +52 -0
- package/src/data/eval/ct-8-logging.ts +68 -0
- package/src/data/eval/ct-9-risk-awareness.ts +33 -0
- package/src/data/eval/deterministic-evaluator.ts +120 -0
- package/src/data/eval/index.ts +55 -0
- package/src/data/eval/judge-prompts.ts +146 -0
- package/src/data/eval/llm-judged-tests.ts +279 -0
- package/src/data/eval/llm-tests.test.ts +83 -0
- package/src/data/eval/remediation/ct-1-transparency.ts +91 -0
- package/src/data/eval/remediation/ct-10-gpai.ts +94 -0
- package/src/data/eval/remediation/ct-11-industry.ts +94 -0
- package/src/data/eval/remediation/ct-2-oversight.ts +71 -0
- package/src/data/eval/remediation/ct-3-explanation.ts +70 -0
- package/src/data/eval/remediation/ct-4-bias.ts +70 -0
- package/src/data/eval/remediation/ct-5-accuracy.ts +70 -0
- package/src/data/eval/remediation/ct-6-robustness.ts +70 -0
- package/src/data/eval/remediation/ct-7-prohibited.ts +94 -0
- package/src/data/eval/remediation/ct-8-logging.ts +94 -0
- package/src/data/eval/remediation/ct-9-risk-awareness.ts +94 -0
- package/src/data/eval/remediation/index.ts +89 -0
- package/src/data/eval/remediation/owasp-art5.ts +15 -0
- package/src/data/eval/remediation/owasp-llm01.ts +72 -0
- package/src/data/eval/remediation/owasp-llm02.ts +72 -0
- package/src/data/eval/remediation/owasp-llm03.ts +15 -0
- package/src/data/eval/remediation/owasp-llm04.ts +15 -0
- package/src/data/eval/remediation/owasp-llm05.ts +15 -0
- package/src/data/eval/remediation/owasp-llm06.ts +15 -0
- package/src/data/eval/remediation/owasp-llm07.ts +15 -0
- package/src/data/eval/remediation/owasp-llm08.ts +15 -0
- package/src/data/eval/remediation/owasp-llm09.ts +15 -0
- package/src/data/eval/remediation/owasp-llm10.ts +15 -0
- package/src/data/eval/remediation/remediation.test.ts +229 -0
- package/src/data/eval/remediation/test-mapping.ts +290 -0
- package/src/data/eval/security-rubrics.ts +381 -0
- package/src/data/finding-explanations.json +453 -0
- package/src/data/industry-patterns.ts +161 -0
- package/src/data/registry-cards.ts +368 -0
- package/src/data/regulation/index.ts +5 -0
- package/src/data/regulation/jurisdiction-data.test.ts +73 -0
- package/src/data/regulation/jurisdiction-data.ts +65 -0
- package/src/data/regulation/regulation-data.ts +19 -0
- package/src/data/regulation/regulation-loader.test.ts +107 -0
- package/src/data/regulation/regulation-loader.ts +56 -0
- package/src/data/scanner-constants.ts +46 -0
- package/src/data/schemas/schemas-core.ts +140 -0
- package/src/data/schemas/schemas-supplementary.ts +211 -0
- package/src/data/schemas/schemas.ts +28 -0
- package/src/data/security/attack-probes.test.ts +62 -0
- package/src/data/security/attack-probes.ts +496 -0
- package/src/data/security/eu-ai-act-security.ts +40 -0
- package/src/data/security/index.ts +19 -0
- package/src/data/security/mitre-atlas.test.ts +43 -0
- package/src/data/security/mitre-atlas.ts +93 -0
- package/src/data/security/nist-ai-rmf.ts +43 -0
- package/src/data/security/owasp-llm-top10.test.ts +60 -0
- package/src/data/security/owasp-llm-top10.ts +138 -0
- package/src/data/template-registry.ts +53 -0
- package/src/data/tool-versions.json +22 -0
- package/src/domain/audit/audit-package.test.ts +152 -0
- package/src/domain/audit/audit-package.ts +166 -0
- package/src/domain/audit/audit-trail.test.ts +121 -0
- package/src/domain/audit/audit-trail.ts +174 -0
- package/src/domain/audit/index.ts +8 -0
- package/src/domain/audit/permissions-matrix.test.ts +136 -0
- package/src/domain/audit/permissions-matrix.ts +121 -0
- package/src/domain/certification/adversarial/bias-tests.ts +95 -0
- package/src/domain/certification/adversarial/evaluators.ts +304 -0
- package/src/domain/certification/adversarial/index.ts +11 -0
- package/src/domain/certification/adversarial/prompt-injection.ts +103 -0
- package/src/domain/certification/adversarial/safety-boundary.ts +132 -0
- package/src/domain/certification/aiuc1-readiness.test.ts +236 -0
- package/src/domain/certification/aiuc1-readiness.ts +298 -0
- package/src/domain/certification/aiuc1-requirements.ts +235 -0
- package/src/domain/certification/index.ts +10 -0
- package/src/domain/certification/redteam-runner.test.ts +97 -0
- package/src/domain/certification/redteam-runner.ts +205 -0
- package/src/domain/certification/test-runner.test.ts +232 -0
- package/src/domain/certification/test-runner.ts +289 -0
- package/src/domain/cost/cost-estimator.test.ts +187 -0
- package/src/domain/cost/cost-estimator.ts +133 -0
- package/src/domain/disclaimer.test.ts +52 -0
- package/src/domain/disclaimer.ts +39 -0
- package/src/domain/documents/ai-enricher.test.ts +120 -0
- package/src/domain/documents/ai-enricher.ts +159 -0
- package/src/domain/documents/document-generator.test.ts +318 -0
- package/src/domain/documents/document-generator.ts +239 -0
- package/src/domain/documents/index.ts +9 -0
- package/src/domain/documents/passport-helpers.ts +25 -0
- package/src/domain/documents/policy-generator.test.ts +252 -0
- package/src/domain/documents/policy-generator.ts +94 -0
- package/src/domain/documents/worker-notification-generator.test.ts +162 -0
- package/src/domain/documents/worker-notification-generator.ts +141 -0
- package/src/domain/eval/adapters/adapter-port.ts +94 -0
- package/src/domain/eval/adapters/adapters.test.ts +303 -0
- package/src/domain/eval/adapters/anthropic-adapter.ts +57 -0
- package/src/domain/eval/adapters/auto-detect.ts +104 -0
- package/src/domain/eval/adapters/create-chat-adapter.ts +106 -0
- package/src/domain/eval/adapters/custom-adapter.ts +74 -0
- package/src/domain/eval/adapters/http-adapter.ts +66 -0
- package/src/domain/eval/adapters/index.ts +7 -0
- package/src/domain/eval/adapters/ollama-adapter.ts +48 -0
- package/src/domain/eval/adapters/openai-adapter.ts +58 -0
- package/src/domain/eval/adapters/with-timeout.ts +25 -0
- package/src/domain/eval/conformity-score.test.ts +161 -0
- package/src/domain/eval/conformity-score.ts +135 -0
- package/src/domain/eval/eval-constants.ts +55 -0
- package/src/domain/eval/eval-evidence.test.ts +85 -0
- package/src/domain/eval/eval-evidence.ts +103 -0
- package/src/domain/eval/eval-fix-generator.test.ts +421 -0
- package/src/domain/eval/eval-fix-generator.ts +205 -0
- package/src/domain/eval/eval-passport.test.ts +82 -0
- package/src/domain/eval/eval-passport.ts +89 -0
- package/src/domain/eval/eval-remediation-report.test.ts +682 -0
- package/src/domain/eval/eval-remediation-report.ts +170 -0
- package/src/domain/eval/eval-report.ts +108 -0
- package/src/domain/eval/eval-runner.test.ts +609 -0
- package/src/domain/eval/eval-runner.ts +593 -0
- package/src/domain/eval/eval-to-findings.test.ts +293 -0
- package/src/domain/eval/eval-to-findings.ts +83 -0
- package/src/domain/eval/index.ts +31 -0
- package/src/domain/eval/llm-judge.test.ts +139 -0
- package/src/domain/eval/llm-judge.ts +168 -0
- package/src/domain/eval/remediation-types.ts +90 -0
- package/src/domain/eval/security-integration.test.ts +196 -0
- package/src/domain/eval/security-integration.ts +136 -0
- package/src/domain/eval/types.test.ts +173 -0
- package/src/domain/eval/types.ts +244 -0
- package/src/domain/eval/verdict-utils.ts +45 -0
- package/src/domain/fixer/create-fixer.ts +101 -0
- package/src/domain/fixer/diff.ts +70 -0
- package/src/domain/fixer/fix-history.ts +23 -0
- package/src/domain/fixer/fixer.test.ts +306 -0
- package/src/domain/fixer/index.ts +9 -0
- package/src/domain/fixer/strategies/bandit-fix.ts +61 -0
- package/src/domain/fixer/strategies/bias-testing.ts +49 -0
- package/src/domain/fixer/strategies/ci-compliance.ts +57 -0
- package/src/domain/fixer/strategies/content-marking.ts +45 -0
- package/src/domain/fixer/strategies/cve-upgrade.ts +66 -0
- package/src/domain/fixer/strategies/data-governance.ts +65 -0
- package/src/domain/fixer/strategies/disclosure.ts +69 -0
- package/src/domain/fixer/strategies/doc-code-sync.ts +53 -0
- package/src/domain/fixer/strategies/documentation.ts +59 -0
- package/src/domain/fixer/strategies/error-handler.ts +63 -0
- package/src/domain/fixer/strategies/hitl-gate.ts +67 -0
- package/src/domain/fixer/strategies/index.ts +61 -0
- package/src/domain/fixer/strategies/kill-switch-test.ts +85 -0
- package/src/domain/fixer/strategies/kill-switch.ts +53 -0
- package/src/domain/fixer/strategies/license-fix.ts +57 -0
- package/src/domain/fixer/strategies/log-retention.ts +40 -0
- package/src/domain/fixer/strategies/logging.ts +59 -0
- package/src/domain/fixer/strategies/metadata.ts +45 -0
- package/src/domain/fixer/strategies/permission-guard.ts +84 -0
- package/src/domain/fixer/strategies/record-keeping.ts +69 -0
- package/src/domain/fixer/strategies/secret-rotation.ts +52 -0
- package/src/domain/fixer/strategies.test.ts +341 -0
- package/src/domain/fixer/template-engine.test.ts +64 -0
- package/src/domain/fixer/template-engine.ts +38 -0
- package/src/domain/fixer/types.ts +88 -0
- package/src/domain/frameworks/aiuc1-framework.test.ts +159 -0
- package/src/domain/frameworks/aiuc1-framework.ts +126 -0
- package/src/domain/frameworks/collect-foundation-metrics.test.ts +96 -0
- package/src/domain/frameworks/collect-foundation-metrics.ts +34 -0
- package/src/domain/frameworks/eu-ai-act-framework.test.ts +117 -0
- package/src/domain/frameworks/eu-ai-act-framework.ts +100 -0
- package/src/domain/frameworks/framework-registry.test.ts +91 -0
- package/src/domain/frameworks/framework-registry.ts +38 -0
- package/src/domain/frameworks/index.ts +8 -0
- package/src/domain/frameworks/mitre-atlas-framework.test.ts +53 -0
- package/src/domain/frameworks/mitre-atlas-framework.ts +53 -0
- package/src/domain/frameworks/owasp-llm-framework.test.ts +77 -0
- package/src/domain/frameworks/owasp-llm-framework.ts +54 -0
- package/src/domain/frameworks/score-plugin-framework.ts +117 -0
- package/src/domain/fria/fria-generator.test.ts +273 -0
- package/src/domain/fria/fria-generator.ts +366 -0
- package/src/domain/import/promptfoo-importer.test.ts +103 -0
- package/src/domain/import/promptfoo-importer.ts +151 -0
- package/src/domain/onboarding/guided-onboarding.test.ts +144 -0
- package/src/domain/onboarding/guided-onboarding.ts +135 -0
- package/src/domain/passport/builder/domain-mapper.ts +9 -0
- package/src/domain/passport/builder/manifest-builder.test.ts +546 -0
- package/src/domain/passport/builder/manifest-builder.ts +535 -0
- package/src/domain/passport/builder/manifest-diff.test.ts +105 -0
- package/src/domain/passport/builder/manifest-diff.ts +89 -0
- package/src/domain/passport/builder/manifest-files.ts +17 -0
- package/src/domain/passport/crypto-signer.test.ts +93 -0
- package/src/domain/passport/crypto-signer.ts +157 -0
- package/src/domain/passport/discovery/agent-discovery.test.ts +296 -0
- package/src/domain/passport/discovery/agent-discovery.ts +325 -0
- package/src/domain/passport/discovery/autonomy-analyzer.test.ts +141 -0
- package/src/domain/passport/discovery/autonomy-analyzer.ts +113 -0
- package/src/domain/passport/discovery/permission-scanner.test.ts +191 -0
- package/src/domain/passport/discovery/permission-scanner.ts +414 -0
- package/src/domain/passport/export/a2a-mapper.ts +75 -0
- package/src/domain/passport/export/aiuc1-mapper.ts +126 -0
- package/src/domain/passport/export/export.test.ts +207 -0
- package/src/domain/passport/export/index.ts +41 -0
- package/src/domain/passport/export/nist-mapper.ts +227 -0
- package/src/domain/passport/import/a2a-importer.test.ts +133 -0
- package/src/domain/passport/import/a2a-importer.ts +156 -0
- package/src/domain/passport/import/index.ts +2 -0
- package/src/domain/passport/index.ts +32 -0
- package/src/domain/passport/obligation-field-map.test.ts +113 -0
- package/src/domain/passport/obligation-field-map.ts +117 -0
- package/src/domain/passport/passport-validator.test.ts +156 -0
- package/src/domain/passport/passport-validator.ts +126 -0
- package/src/domain/passport/scan-to-compliance.test.ts +336 -0
- package/src/domain/passport/scan-to-compliance.ts +166 -0
- package/src/domain/passport/test-generator.test.ts +93 -0
- package/src/domain/passport/test-generator.ts +136 -0
- package/src/domain/proxy/index.ts +11 -0
- package/src/domain/proxy/json-rpc.test.ts +72 -0
- package/src/domain/proxy/json-rpc.ts +53 -0
- package/src/domain/proxy/policy-engine.test.ts +259 -0
- package/src/domain/proxy/policy-engine.ts +137 -0
- package/src/domain/proxy/proxy-bridge.ts +125 -0
- package/src/domain/proxy/proxy-interceptor.test.ts +184 -0
- package/src/domain/proxy/proxy-interceptor.ts +120 -0
- package/src/domain/proxy/proxy-types.ts +35 -0
- package/src/domain/registry/compute-agent-score.test.ts +279 -0
- package/src/domain/registry/compute-agent-score.ts +162 -0
- package/src/domain/reporter/audit-report.test.ts +87 -0
- package/src/domain/reporter/audit-report.ts +116 -0
- package/src/domain/reporter/badge-generator.test.ts +54 -0
- package/src/domain/reporter/badge-generator.ts +40 -0
- package/src/domain/reporter/compliance-md.ts +45 -0
- package/src/domain/reporter/index.ts +7 -0
- package/src/domain/reporter/pdf-renderer.ts +282 -0
- package/src/domain/reporter/share.test.ts +92 -0
- package/src/domain/reporter/share.ts +80 -0
- package/src/domain/scanner/ast/swc-analyzer.test.ts +49 -0
- package/src/domain/scanner/ast/swc-analyzer.ts +124 -0
- package/src/domain/scanner/attestations.ts +97 -0
- package/src/domain/scanner/checks/ai-disclosure.test.ts +90 -0
- package/src/domain/scanner/checks/ai-disclosure.ts +54 -0
- package/src/domain/scanner/checks/ai-literacy.ts +163 -0
- package/src/domain/scanner/checks/behavioral-constraints.test.ts +167 -0
- package/src/domain/scanner/checks/behavioral-constraints.ts +86 -0
- package/src/domain/scanner/checks/compliance-metadata.ts +63 -0
- package/src/domain/scanner/checks/content-marking.ts +74 -0
- package/src/domain/scanner/checks/dep-deep-scan.test.ts +318 -0
- package/src/domain/scanner/checks/dep-deep-scan.ts +137 -0
- package/src/domain/scanner/checks/documentation.test.ts +88 -0
- package/src/domain/scanner/checks/documentation.ts +79 -0
- package/src/domain/scanner/checks/git-history.test.ts +120 -0
- package/src/domain/scanner/checks/git-history.ts +163 -0
- package/src/domain/scanner/checks/gpai-systemic-risk.test.ts +84 -0
- package/src/domain/scanner/checks/gpai-systemic-risk.ts +98 -0
- package/src/domain/scanner/checks/gpai-transparency.ts +94 -0
- package/src/domain/scanner/checks/index.ts +28 -0
- package/src/domain/scanner/checks/industry/index.ts +40 -0
- package/src/domain/scanner/checks/industry/industry.test.ts +287 -0
- package/src/domain/scanner/checks/interaction-logging.test.ts +113 -0
- package/src/domain/scanner/checks/interaction-logging.ts +142 -0
- package/src/domain/scanner/checks/nhi-scanner.test.ts +158 -0
- package/src/domain/scanner/checks/nhi-scanner.ts +78 -0
- package/src/domain/scanner/checks/passport-completeness.test.ts +127 -0
- package/src/domain/scanner/checks/passport-completeness.ts +82 -0
- package/src/domain/scanner/checks/passport-presence.test.ts +56 -0
- package/src/domain/scanner/checks/passport-presence.ts +78 -0
- package/src/domain/scanner/checks/pattern-check-factory.ts +70 -0
- package/src/domain/scanner/checks/permission-scanner.test.ts +279 -0
- package/src/domain/scanner/checks/permission-scanner.ts +90 -0
- package/src/domain/scanner/checks/presence-check-factory.test.ts +124 -0
- package/src/domain/scanner/checks/presence-check-factory.ts +275 -0
- package/src/domain/scanner/compliance-diff.test.ts +165 -0
- package/src/domain/scanner/compliance-diff.ts +138 -0
- package/src/domain/scanner/confidence.test.ts +235 -0
- package/src/domain/scanner/confidence.ts +156 -0
- package/src/domain/scanner/constants.ts +13 -0
- package/src/domain/scanner/create-scanner.ts +573 -0
- package/src/domain/scanner/cross-layer.test.ts +372 -0
- package/src/domain/scanner/cross-layer.ts +232 -0
- package/src/domain/scanner/data/ai-packages.ts +82 -0
- package/src/domain/scanner/debt-calculator.test.ts +89 -0
- package/src/domain/scanner/debt-calculator.ts +111 -0
- package/src/domain/scanner/drift.test.ts +191 -0
- package/src/domain/scanner/drift.ts +73 -0
- package/src/domain/scanner/evidence-store.test.ts +207 -0
- package/src/domain/scanner/evidence-store.ts +195 -0
- package/src/domain/scanner/evidence.test.ts +104 -0
- package/src/domain/scanner/evidence.ts +71 -0
- package/src/domain/scanner/external/bandit-runner.test.ts +45 -0
- package/src/domain/scanner/external/bandit-runner.ts +90 -0
- package/src/domain/scanner/external/checks.ts +321 -0
- package/src/domain/scanner/external/dedup.test.ts +79 -0
- package/src/domain/scanner/external/dedup.ts +94 -0
- package/src/domain/scanner/external/detect-secrets-runner.test.ts +58 -0
- package/src/domain/scanner/external/detect-secrets-runner.ts +81 -0
- package/src/domain/scanner/external/external-scanner.test.ts +221 -0
- package/src/domain/scanner/external/external-scanner.ts +36 -0
- package/src/domain/scanner/external/finding-mapper.test.ts +95 -0
- package/src/domain/scanner/external/finding-mapper.ts +138 -0
- package/src/domain/scanner/external/index.ts +15 -0
- package/src/domain/scanner/external/mappings.ts +93 -0
- package/src/domain/scanner/external/modelscan-runner.test.ts +35 -0
- package/src/domain/scanner/external/modelscan-runner.ts +101 -0
- package/src/domain/scanner/external/path-utils.ts +8 -0
- package/src/domain/scanner/external/runner-port.ts +45 -0
- package/src/domain/scanner/external/semgrep-runner.test.ts +52 -0
- package/src/domain/scanner/external/semgrep-runner.ts +94 -0
- package/src/domain/scanner/external/types.ts +32 -0
- package/src/domain/scanner/finding-attribution.test.ts +444 -0
- package/src/domain/scanner/finding-attribution.ts +195 -0
- package/src/domain/scanner/finding-explainer.test.ts +157 -0
- package/src/domain/scanner/finding-explainer.ts +73 -0
- package/src/domain/scanner/fix-diff-builder.test.ts +272 -0
- package/src/domain/scanner/fix-diff-builder.ts +477 -0
- package/src/domain/scanner/import-graph.test.ts +162 -0
- package/src/domain/scanner/import-graph.ts +198 -0
- package/src/domain/scanner/languages/adapter.test.ts +105 -0
- package/src/domain/scanner/languages/adapter.ts +239 -0
- package/src/domain/scanner/layers/index.ts +24 -0
- package/src/domain/scanner/layers/layer1-files.ts +54 -0
- package/src/domain/scanner/layers/layer2-docs.test.ts +1207 -0
- package/src/domain/scanner/layers/layer2-docs.ts +297 -0
- package/src/domain/scanner/layers/layer2-parsing.ts +217 -0
- package/src/domain/scanner/layers/layer3-config.test.ts +187 -0
- package/src/domain/scanner/layers/layer3-config.ts +279 -0
- package/src/domain/scanner/layers/layer3-parsers.ts +73 -0
- package/src/domain/scanner/layers/layer4-patterns.test.ts +397 -0
- package/src/domain/scanner/layers/layer4-patterns.ts +216 -0
- package/src/domain/scanner/layers/layer5-docs.test.ts +99 -0
- package/src/domain/scanner/layers/layer5-docs.ts +250 -0
- package/src/domain/scanner/layers/layer5-llm.test.ts +146 -0
- package/src/domain/scanner/layers/layer5-llm.ts +262 -0
- package/src/domain/scanner/layers/layer5-targeted.test.ts +93 -0
- package/src/domain/scanner/layers/layer5-targeted.ts +233 -0
- package/src/domain/scanner/layers/lockfile-parsers.test.ts +320 -0
- package/src/domain/scanner/layers/lockfile-parsers.ts +184 -0
- package/src/domain/scanner/regulation-version.test.ts +54 -0
- package/src/domain/scanner/regulation-version.ts +23 -0
- package/src/domain/scanner/role-filter.test.ts +116 -0
- package/src/domain/scanner/role-filter.ts +51 -0
- package/src/domain/scanner/rules/banned-packages-data.ts +553 -0
- package/src/domain/scanner/rules/banned-packages-sdk.ts +65 -0
- package/src/domain/scanner/rules/banned-packages.test.ts +249 -0
- package/src/domain/scanner/rules/banned-packages.ts +55 -0
- package/src/domain/scanner/rules/comment-filter.test.ts +115 -0
- package/src/domain/scanner/rules/comment-filter.ts +297 -0
- package/src/domain/scanner/rules/index.ts +9 -0
- package/src/domain/scanner/rules/nhi-patterns.test.ts +128 -0
- package/src/domain/scanner/rules/nhi-patterns.ts +60 -0
- package/src/domain/scanner/rules/pattern-rules.ts +1152 -0
- package/src/domain/scanner/sbom.test.ts +136 -0
- package/src/domain/scanner/sbom.ts +103 -0
- package/src/domain/scanner/scan-cache.test.ts +136 -0
- package/src/domain/scanner/scan-cache.ts +115 -0
- package/src/domain/scanner/scanner.test.ts +125 -0
- package/src/domain/scanner/score-calculator.test.ts +363 -0
- package/src/domain/scanner/score-calculator.ts +189 -0
- package/src/domain/scanner/security-score.test.ts +107 -0
- package/src/domain/scanner/security-score.ts +116 -0
- package/src/domain/scanner/source-filter.ts +24 -0
- package/src/domain/scanner/validators.ts +223 -0
- package/src/domain/shared/compliance-constants.ts +48 -0
- package/src/domain/shared/disclosure-patterns.ts +16 -0
- package/src/domain/shared/index.ts +6 -0
- package/src/domain/shared/parse-dependencies.ts +21 -0
- package/src/domain/supply-chain/dependency-analyzer.ts +138 -0
- package/src/domain/supply-chain/index.ts +3 -0
- package/src/domain/supply-chain/supply-chain.test.ts +211 -0
- package/src/domain/supply-chain/types.ts +32 -0
- package/src/domain/whatif/config-fixer.ts +187 -0
- package/src/domain/whatif/index.ts +6 -0
- package/src/domain/whatif/scenario-engine.ts +121 -0
- package/src/domain/whatif/simulate-actions.test.ts +161 -0
- package/src/domain/whatif/simulate-actions.ts +114 -0
- package/src/domain/whatif/whatif.test.ts +135 -0
- package/src/e2e/gaps-e2e.test.ts +259 -0
- package/src/e2e/smoke.test.ts +101 -0
- package/src/hooks/hooks-export.test.ts +81 -0
- package/src/hooks/installer.ts +113 -0
- package/src/http/cors.test.ts +38 -0
- package/src/http/create-router.ts +259 -0
- package/src/http/routes/agent.route.ts +380 -0
- package/src/http/routes/audit.route.ts +66 -0
- package/src/http/routes/badge.route.ts +23 -0
- package/src/http/routes/cert.route.ts +66 -0
- package/src/http/routes/chat.route.ts +228 -0
- package/src/http/routes/cost.route.ts +33 -0
- package/src/http/routes/debt.route.ts +29 -0
- package/src/http/routes/disclaimer.route.ts +64 -0
- package/src/http/routes/eval.route.ts +161 -0
- package/src/http/routes/events.route.test.ts +108 -0
- package/src/http/routes/events.route.ts +71 -0
- package/src/http/routes/external-scan.route.ts +24 -0
- package/src/http/routes/file.route.ts +54 -0
- package/src/http/routes/fix.route.ts +219 -0
- package/src/http/routes/frameworks.route.test.ts +66 -0
- package/src/http/routes/frameworks.route.ts +36 -0
- package/src/http/routes/git.route.ts +27 -0
- package/src/http/routes/guided-onboarding.route.ts +65 -0
- package/src/http/routes/import.route.ts +64 -0
- package/src/http/routes/jurisdiction.route.ts +22 -0
- package/src/http/routes/obligations.route.test.ts +122 -0
- package/src/http/routes/obligations.route.ts +110 -0
- package/src/http/routes/onboarding.route.ts +53 -0
- package/src/http/routes/provider.route.ts +42 -0
- package/src/http/routes/proxy.route.ts +40 -0
- package/src/http/routes/redteam.route.ts +84 -0
- package/src/http/routes/report.route.ts +29 -0
- package/src/http/routes/scan.route.ts +104 -0
- package/src/http/routes/share.route.ts +44 -0
- package/src/http/routes/shell.route.ts +27 -0
- package/src/http/routes/status.route.ts +66 -0
- package/src/http/routes/supply-chain.route.ts +121 -0
- package/src/http/routes/sync.route.ts +328 -0
- package/src/http/routes/tools.route.ts +29 -0
- package/src/http/routes/whatif.route.ts +96 -0
- package/src/http/utils/validation.ts +31 -0
- package/src/index.ts +1 -0
- package/src/infra/bundle-fetcher.ts +77 -0
- package/src/infra/cache-storage.ts +34 -0
- package/src/infra/event-bus.ts +31 -0
- package/src/infra/file-collector.ts +61 -0
- package/src/infra/file-ops-adapter.ts +95 -0
- package/src/infra/file-watcher.test.ts +90 -0
- package/src/infra/file-watcher.ts +106 -0
- package/src/infra/git-adapter.ts +93 -0
- package/src/infra/git-history-adapter.ts +41 -0
- package/src/infra/headless-browser.ts +178 -0
- package/src/infra/llm-adapter.test.ts +83 -0
- package/src/infra/llm-adapter.ts +86 -0
- package/src/infra/logger.ts +27 -0
- package/src/infra/project-config.test.ts +74 -0
- package/src/infra/project-config.ts +35 -0
- package/src/infra/rate-limiter.test.ts +36 -0
- package/src/infra/rate-limiter.ts +34 -0
- package/src/infra/retry.ts +46 -0
- package/src/infra/saas-client.ts +123 -0
- package/src/infra/search-adapter.ts +113 -0
- package/src/infra/shell-adapter.ts +68 -0
- package/src/infra/tool-manager.test.ts +99 -0
- package/src/infra/tool-manager.ts +197 -0
- package/src/llm/agents/agent-modes.test.ts +44 -0
- package/src/llm/agents/modes.ts +68 -0
- package/src/llm/routing/cost-routing.test.ts +37 -0
- package/src/llm/routing/cost-tracker.ts +74 -0
- package/src/llm/routing/model-routing.test.ts +79 -0
- package/src/llm/routing/model-routing.ts +38 -0
- package/src/llm/routing/pricing.ts +19 -0
- package/src/llm/sse-protocol.ts +77 -0
- package/src/llm/tool-definitions.ts +83 -0
- package/src/llm/tool-executors.ts +80 -0
- package/src/llm/tools/types.ts +13 -0
- package/src/mcp/create-mcp-stack.ts +82 -0
- package/src/mcp/handlers.ts +245 -0
- package/src/mcp/index.ts +28 -0
- package/src/mcp/mcp-server.test.ts +80 -0
- package/src/mcp/server.ts +79 -0
- package/src/mcp/tools.ts +48 -0
- package/src/onboarding/auto-detect.ts +164 -0
- package/src/onboarding/onboarding.test.ts +89 -0
- package/src/onboarding/profile.ts +169 -0
- package/src/onboarding/questions.ts +112 -0
- package/src/onboarding/wizard.ts +66 -0
- package/src/output/github-issue.ts +32 -0
- package/src/output/json-output.ts +67 -0
- package/src/ports/browser.port.ts +23 -0
- package/src/ports/events.port.ts +28 -0
- package/src/ports/llm.port.ts +23 -0
- package/src/ports/logger.port.ts +6 -0
- package/src/ports/process.port.ts +6 -0
- package/src/ports/scanner.port.ts +15 -0
- package/src/server.ts +134 -0
- package/src/services/badge-service.ts +67 -0
- package/src/services/chat-service.test.ts +162 -0
- package/src/services/chat-service.ts +152 -0
- package/src/services/cost-service.ts +52 -0
- package/src/services/debt-service.ts +65 -0
- package/src/services/eval-integration.test.ts +132 -0
- package/src/services/eval-service.test.ts +373 -0
- package/src/services/eval-service.ts +463 -0
- package/src/services/external-scan-service.ts +60 -0
- package/src/services/file-service.ts +37 -0
- package/src/services/fix-service.test.ts +470 -0
- package/src/services/fix-service.ts +648 -0
- package/src/services/framework-service.test.ts +159 -0
- package/src/services/framework-service.ts +67 -0
- package/src/services/onboarding-service.ts +165 -0
- package/src/services/passport-audit.ts +244 -0
- package/src/services/passport-documents.ts +258 -0
- package/src/services/passport-service-utils.ts +72 -0
- package/src/services/passport-service.test.ts +251 -0
- package/src/services/passport-service.ts +339 -0
- package/src/services/proxy-service.ts +81 -0
- package/src/services/report-service.ts +72 -0
- package/src/services/scan-service.test.ts +470 -0
- package/src/services/scan-service.ts +335 -0
- package/src/services/share-service.ts +108 -0
- package/src/services/shared/backup.ts +23 -0
- package/src/services/status-service.ts +38 -0
- package/src/services/undo-service.test.ts +190 -0
- package/src/services/undo-service.ts +144 -0
- package/src/test-helpers/factories.ts +116 -0
- package/src/types/common.schemas.ts +147 -0
- package/src/types/common.types.ts +292 -0
- package/src/types/contract.test.ts +217 -0
- package/src/types/errors.ts +52 -0
- package/src/types/framework.types.ts +87 -0
- package/src/types/passport-schemas.ts +241 -0
- package/src/types/passport.types.ts +296 -0
- package/src/version.ts +1 -0
- package/tsconfig.json +20 -0
- 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 | _________________ | _________ |
|