feat(registry-quality): Scope-Audit-Tool — Adressaten-Prüfung (Hersteller vs Behörde)

Generalisiert den Zitierfähigkeits-Befund (2 Kapitel-Obligations authority-facing) zu
einem wiederverwendbaren Review-Stage-Werkzeug: flaggt Obligations, deren applicability
an Behörde/notifizierte Stelle/Mitgliedstaat adressiert ist = out_of_scope-Kandidaten
(Registry modelliert Hersteller-Pflichten; Präzedenz CSIRT/ENISA im CRA-Vuln-Cut).

- scope_audit.py: deterministisch, key't auf applicability (Adressat), NICHT auf
  Behörden-Nennung im Namen → Melde-AN-Behörde-Pflichten bleiben korrekt IN-SCOPE
  (False-Positive-Guard, verifiziert an exploited_vuln_reporting_authorities).
- 126 Obligations gescannt → 3 Kandidaten (alle MaschVO LEGAL_MINIMUM):
  notified_body_requirements (domain:notified_body) · market_surveillance_safeguard
  (domain:authority) · sanctions (domain:authority).
- scope_audit_findings.json = Findings-Artefakt. Audit FLAGGT nur;
  Reklassifizierung = User/Owner-Entscheidung (ändert join_keys, cross-session).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Benjamin Admin
2026-07-01 13:12:40 +02:00
parent a4cb104258
commit e54d07f2d9
2 changed files with 113 additions and 0 deletions
+45
View File
@@ -0,0 +1,45 @@
{
"audit": "obligation scope audit (Adressat: Hersteller vs Behörde/notified_body)",
"principle": "Registry modelliert Hersteller-Pflichten; Enforcement/Institutions-Recht = out_of_scope-Kandidat",
"false_positive_guard": "Melde-AN-Behörde-Pflichten (applicability=domain:products…) bleiben IN-SCOPE",
"obligations_scanned": 126,
"out_of_scope_candidates": [
{
"file": "cra_machinery.json",
"id": "notified_body_requirements",
"name": "Anforderungen an notifizierte Stellen",
"tier": "LEGAL_MINIMUM",
"applicability": "domain:notified_body",
"subdomain": "notified_body",
"member_count": 11,
"reason": "Adressat ist Behörde/notifizierte Stelle/Mitgliedstaat, nicht Hersteller",
"precedent": "CRA-Vuln-Cut: CSIRT/ENISA out_of_scope (Adressat != Hersteller)",
"recommendation": "out_of_scope ODER eigene Kategorie 'institutional/enforcement'"
},
{
"file": "cra_machinery.json",
"id": "market_surveillance_safeguard",
"name": "Marktüberwachung, nationale Schutzmaßnahmen und Korrekturmaßnahmen",
"tier": "LEGAL_MINIMUM",
"applicability": "domain:authority",
"subdomain": "market_surveillance",
"member_count": 30,
"reason": "Adressat ist Behörde/notifizierte Stelle/Mitgliedstaat, nicht Hersteller",
"precedent": "CRA-Vuln-Cut: CSIRT/ENISA out_of_scope (Adressat != Hersteller)",
"recommendation": "out_of_scope ODER eigene Kategorie 'institutional/enforcement'"
},
{
"file": "cra_machinery.json",
"id": "sanctions",
"name": "Sanktionen für Verstöße gegen die Maschinenverordnung",
"tier": "LEGAL_MINIMUM",
"applicability": "domain:authority",
"subdomain": "sanctions",
"member_count": 19,
"reason": "Adressat ist Behörde/notifizierte Stelle/Mitgliedstaat, nicht Hersteller",
"precedent": "CRA-Vuln-Cut: CSIRT/ENISA out_of_scope (Adressat != Hersteller)",
"recommendation": "out_of_scope ODER eigene Kategorie 'institutional/enforcement'"
}
],
"decision_owner": "User/Registry-Owner — Audit FLAGGT nur, reklassifiziert nicht"
}