# Regelwerk Pflichten-Pfad

Maschinenlesbare Abbildung der Schwellenwerte und Geltungszeitpunkte von neun Regelwerken des EU- und Bundesrechts. Die Datei ist die alleinige Quelle für die Auswertung auf der Website; die Oberfläche enthält keine Schwellenwerte im Code.

**Aktuelle Fassung:** `regelwerke.v1.json`, Version 1.0.0, Rechtsstand 12. Oktober 2026.

## Warum als Daten und nicht als Code

Schwellenwerte und Fristen ändern sich häufiger als die Oberfläche. Im letzten Jahr betraf das die CSRD und die CSDDD über das Omnibus-I-Paket, die Hochrisikopflichten der KI-Verordnung über den Digital Omnibus, die EUDR über VO (EU) 2025/2650 und die Berichtspflicht des LkSG über die Aussetzung durch das BAFA. Liegen diese Werte in einer Datendatei, ist jede Änderung ein nachvollziehbarer Diff mit Datum und Fundstelle, und die Tests schlagen fehl, wenn eine Änderung eine Regel bricht.

## Aufbau

| Schlüssel | Inhalt |
| --- | --- |
| `version` | Semantische Version der Datei |
| `rechtsstand` | Tag der letzten vollständigen Quellenprüfung |
| `felder` | Eingabefelder der Prüfung mit Typ und Einheit |
| `rechtsformen` | Rechtsformen mit dem Merkmal `haftungsbeschraenkt` |
| `branchen` | Branchenkatalog mit Zuordnung zu Anlage 1 oder 2 des BSIG |
| `profile` | Vorbelegte Beispielunternehmen für die Schnellauswahl |
| `regelwerke` | Die neun Regelwerke mit Anwendungsbereich, Kriterien und Stufen |

### Ein Regelwerk

```jsonc
{
  "id": "lksg",
  "name": "Lieferkettensorgfaltspflichtengesetz",
  "basis": "LkSG",
  "schwelle": "ab 1.000 Beschäftigten im Inland",
  "kurz":  "Kurzbeschreibung für die Übersichtskarte",
  "pflicht": "Was das Gesetz konkret verlangt",
  "sanktion": "Bußgeld- oder Sanktionsrahmen",
  "quelle": { "label": "…", "url": "https://…" },

  "gilt":      { /* Bedingung: ist das Regelwerk anwendbar? */ },
  "kriterien": [ /* Anzeige der Prüfung, mit Haken und Istwert */ ],
  "varianten": [ /* erste zutreffende Variante liefert Stufen und Hinweis */ ],
  "ohne":      "Text, wenn der sachliche Anwendungsbereich fehlt"
}
```

### Bedingungen

Eine Bedingung ist entweder ein Vergleich oder eine Verknüpfung.

```jsonc
{ "feld": "emp", "op": ">=", "wert": 50 }
{ "feld": "nis", "op": "in", "wert": ["a1", "a2"] }
{ "alle":  [ bedingung, … ] }   // UND
{ "eines": [ bedingung, … ] }   // ODER
{ "nicht": bedingung }          // Negation
true                            // immer erfüllt, für die letzte Variante
```

Operatoren: `>=`, `>`, `<=`, `<`, `ist`, `in`.

Abgeleitete Felder, die die Engine zusätzlich bereitstellt: `nis` aus `branche`, `formHaftung` aus `form`, sowie die Anzeigewerte `nisLabel`, `formLabel`, `aiLabel` und `groesseEu`.

### Varianten

Die Varianten werden der Reihe nach geprüft; die erste zutreffende gewinnt. Dadurch lassen sich gestufte Regelungen abbilden, etwa besonders wichtige gegenüber wichtigen Einrichtungen nach dem BSIG oder große Marktbeteiligte gegenüber Kleinunternehmen nach der EUDR. Die letzte Variante trägt `"wenn": true` als Auffangfall.

### Abstand zur Schwelle

Der Abstand wird nicht gepflegt, sondern berechnet. Für jedes nicht erfüllte Kriterium mit numerischem Vergleich bildet die Engine die Differenz zum Grenzwert, bei `>` zuzüglich einer Einheit. Daraus entsteht der Hinweis „es fehlen 20 Beschäftigte“.

## Tests

```
node --test "test/*.test.mjs"
```

Die Tests prüfen die Engine gegen fünf Referenzprofile und sichern die Grenzfälle an jeder Schwelle ab, also jeweils einen Wert unterhalb und einen auf der Schwelle. Eine Änderung an der Datendatei, die eine Schwelle verschiebt, schlägt dort sichtbar fehl.

## Änderungen einpflegen

1. Wert in `regelwerke.v1.json` ändern, `rechtsstand` auf den Tag der Prüfung setzen.
2. Quelle prüfen und bei Bedarf in `quelle.url` aktualisieren. Behörden und Kammern vor Fachbeiträgen.
3. Eintrag im `CHANGELOG.md` mit Datum, betroffenem Regelwerk, altem und neuem Wert sowie der Rechtsgrundlage der Änderung.
4. `node --test "test/*.test.mjs"` ausführen und die Grenzfälle anpassen, falls sich eine Schwelle verschoben hat.
5. `version` erhöhen: Patch bei Quellen und Texten, Minor bei neuen Regelwerken oder Feldern, Major bei einer Änderung des Schemas.

## Lizenz und Haftung

Die Daten bilden Regelschwellen ab und sind keine Rechtsdienstleistung im Sinne des § 2 RDG. Gesetzestexte sind amtliche Werke nach § 5 UrhG und frei. Für die Struktur und die Zusammenstellung gilt der Hinweis im Haftungsausschluss der Website.
