Files

296 lines
19 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Wissensbasis Personalverrechnung (Lexis360-Exporte, WIKU Personal,
WKO-Kollektivverträge, RIS-Gesetze, Rechtsprechung)
Kuratierte Wissensbasis aus vier Quellcorpora — den **LexisNexis-Briefings**
des Werks *Lexis Briefings Personalrecht* (Export aus Lexis 360), den
**WIKU-Personal-Publikationen** (Fachbroschüren, Arbeitsunterlagen,
Casebooks, Fachzeitschrift „WIKU Personal aktuell“), den **Kollektivvertrags-
Dokumenten von WKO.at** (Lohn-/Gehaltsordnungen inkl. Lohntabellen,
KV-Abschlüsse, Erläuterungen, Zusatz-KVs) und den **RIS-Gesetzes-Texten**
(Rechtsinformationssystem des Bundes; nur die im Lexis360-Bestand zitierten
Paragraphen je Gesetz) sowie **Rechtsprechung** (OGH-, VwGH- und VfGH-
Entscheidungen und Rechtssätze aus RIS-OGD sowie fünf als nicht amtlich
markierte EuGH-Textwiedergaben). Ein **gemeinsamer Korpus**: das `work`-Feld
unterscheidet die Quellen, ID-Räume `lb-*` (Lexis), `wk-*` (WIKU),
`kv-*` (WKO-KV), `ris-*` (RIS) und `rj-*` (Rechtsprechung/Normentexte)
liegen auf derselben Cluster-Map. Zweck:
1. **Entwicklungsreferenz** neben den Rechtsquellen-Übersichten
(`RECHTSQUELLEN-*.md` im Schwesterprojekt) für die Personalverrechnungs-
module (`l10n_at_hr_payroll*`), und
2. **Copilot-Korpus**: Aufbau und Frontmatter sind retrieval-gerecht
(stabile IDs, maschinenlesbares `kb.json`), damit künftig ein
Frage-Antwort-Copilot darauf aufbauen kann.
## Schichten (Lizenz-Entscheidung D1, 2026-09-10)
| Schicht | Pfad | Versioniert? | Inhalt |
|---|---|---|---|
| PDF-Exporte | `.lexis360/Lexis360_*.pdf` · `.wiku/*.pdf` | **nein** (gitignored) | lizensierte Original-PDFs |
| Layer 1 — Volltexte | `.lexis360/md/<slug>.md` · `.wiku/md/<slug>.md` | **nein** (gitignored) | vollständiger Extraktionstext + Metadaten-Frontmatter |
| Katalog | `.lexis360/md/_catalog.json` · `.wiku/md/_catalog.json` | **nein** (gitignored) | geparste Metadaten aller Quellen (Slug ↔ ID ↔ Stand ↔ Cluster) |
| Rohquellen kv/ris/rj | `.firecrawl/kv-portal/wko-kv/docs/*.html` · `.ris/*.md` · `.rechtsprechung/{originale,gesetze}/*.md` | **nein** (gitignored) | WKO-KV-Seiten, RIS-Gesetzes-Auschnitte sowie Rechtsprechung/Normentexte |
| Layer 2 — Einträge | `dokumente/<slug>.md` (Lexis) · `dokumente/wiku_<slug>.md` (WIKU) · `dokumente/kv_<slug>.md` (WKO-KV, **generiert**) · `dokumente/ris_<slug>.md` (RIS, **generiert**) · `dokumente/rj_<slug>.md` (Rechtsprechung, **generiert**) | **ja** | Kuratierung in eigenen Worten (lb/wk) bzw. quellentreue Konvertierung (kv/ris/rj, Tool-Output) |
| Registry | `wissensbasis/kb.json` | **ja** | **generiert** aus dem Layer-2-Frontmatter aller Quellen (`tools/build_registry.py`) |
| Kataloge kv/ris/rj | `tools/catalogs/kv_catalog.json` · `ris_catalog.json` · `rj_catalog.json` | **ja** | eingefrorene ID-Zuweisungen (nur Metadaten, keine Quelltexte) |
Volltexte der lizenzierten Quellen (Lexis/WIKU) sind Lizenzinhalt und
bleiben wie `.firecrawl/` und `.firecrawl/ris/gesetze/` lokal + unversioniert. Nur die
Layer-2-Einträge werden committed. **Lizenz-Sonderfall der neuen Quellen
(Entscheidung 2026-09-15):** Gesetze sind amtliche Werke (§ 7 UrhG) und
WKO-KV-Texte müssen zahlenexakt bleiben (Lohntabellen) — daher sind
`kv_*.md`/`ris_*.md` **quellentreu generiert** (Konverter
`tools/ingest_sources.py`), NICHT in eigenen Worten kuratiert, und sie
sind **Tool-Output**: keine manuelle Bearbeitung, bei Änderungen neu
generieren. Die WKO-Seiten selbst und die `.firecrawl/ris/gesetze/`-Dateien bleiben
unversioniert; die Einträge tragen ihre Quelle (`source.html`/`source.text`)
und die WKO-/RIS-URL im Body.
**Rechtsprechung (Batch rj 1, 2026-09-15):** Die Lieferung unter
`.rechtsprechung/` dokumentiert für OGH/VwGH/VfGH überwiegend RIS-OGD-
Provenance. Ihre Layer-2-Dateien `rj_*.md` werden deshalb quellentreu aus den
lokalen Markdown-Dateien generiert und behalten Gericht, Datum, Geschäftszahl,
Normen und Quellenpfad. Rechtssätze, Volltexte, zitierte Normauszüge und EuGH-
Fälle sind jeweils im `chapter`/`work` unterscheidbar. Die fünf EuGH-Dateien
sind ausdrücklich als **„Textwiedergabe lexetius, nicht amtlich“** markiert
und nennen zusätzlich die amtliche EUR-Lex-URL, soweit geliefert. Die
Publikations- und Lizenzfreigabe der quellentreuen Rechtsprechungs-Volltexte
ist vor einem Commit bewusst zu bestätigen; sie wird nicht aus der allgemeinen
Ausnahme für amtliche Gesetzestexte abgeleitet. Die `overviews/` (1 820 Bundesland-Übersichts-
seiten von WKO.at) werden derzeit **nicht** aufgenommen (Redundanz zu `docs/`).
## Frontmatter-Schema (Layer 2 — verbindlich)
```yaml
id: lb-atz-07 # stabil; lb-<cluster>-<nn> (Lexis) bzw. wk-<cluster>-<nn> (WIKU), eingefroren
batch: 1 # Beschaffungs-Batch je Quelle (manuell je Import)
title: "Altersteilzeit - Überblick"
work: "Lexis Briefings Personalrecht" # WIKU: exakter Publikationstyp („WIKU Fachbroschüre“, „WIKU Arbeitsunterlage“, „WIKU Casebook“, „WIKU Personal aktuell“)
chapter: "Beschäftigungsverhältnisse" # Quell-Kapitel (WIKU: aus WIKU_PINS, idR der Publikationstitel)
topic: altersteilzeit # ASCII-Cluster-Slug (s. Tabelle)
author: "Marek" # WIKU: „Wilhelm Kurzböck“
stand: 2026-01 # ISO-Monat des Quell-Stands (WIKU: Impressum/Dateiname, „Personal aktuell“: Heft-Monat)
source:
pdf: ".lexis360/Lexis360_altersteilzeit_uberblick.pdf" # WIKU: ".wiku/<dateiname>.pdf"
text: ".lexis360/md/altersteilzeit_uberblick.md" # WIKU: ".wiku/md/<slug>.md"
legal_bases: ["AlVG", "AZG § 19e"] # nur im Quelltext genannte Normen
tags: [altersteilzeit, ams-foerderung] # ASCII-Slugs, retrieval-freundlich
cross_refs: ["lb-atz-09"] # verwandte KB-Einträge (lb↔wk erlaubt; dangling = Fehler)
```
Schlüsselkonvention (Entscheidung D2): **strukturelle Schlüssel
englisch** (konsistent mit `kv-catalog.json`/`chambers.json`),
**Werte deutsch** (UTF-8, Umlaute erlaubt). Zwei Ausnahmen: `stand`
(österreichischer Fachbegriff, ISO-Wert `YYYY-MM`) und `topic`/`tags`
als ASCII-Slugs. Die Frontmatter ist **Single Source of Truth**;
`kb.json` wird daraus generiert und schema-validiert
(`tools/build_registry.py`, in diesem Repo).
## Cluster (Lexis Batch 19 + WIKU Batch 1)
| topic-Slug | Name | ID-Präfix | IDs | n |
|---|---|---|---|---|
| `altersteilzeit` | Altersteilzeit | `atz` | lb-atz-01 … 15 | 15 |
| `lehrlinge` | Lehrverhältnis / Lehrlinge | `leh` | lb-leh-01 … 16 | 16 |
| `jugendliche` | Jugendarbeit / Jugendschutz | `jug` | lb-jug-01 … 08 | 8 |
| `ferialpraktikanten` | Ferialpraktikanten, Volontäre, Au-pair | `pra` | lb-pra-01 … 04 | 4 |
| `beschaftigungsformen` | Beschäftigungsformen & Abgrenzung | `bes` | lb-bes-01 … 08 | 8 |
| `teilzeit` | Teilzeit & Bildungsteilzeit | `tzb` | lb-tzb-01 … 06 | 6 |
| `behinderte` | Behinderte Arbeitnehmer | `beh` | lb-beh-01 … 04 | 4 |
| `entgelt` | Entgelt: Anspruch & Abrechnung | `ent` | lb-ent-01 … 11 | 11 |
| `geschaftsfuhrer` | Geschäftsführer | `gsf` | lb-gsf-01 … 05 | 5 |
| `leitende-angestellte` | Leitende Angestellte | `lei` | lb-lei-01 | 1 |
| `pramien` | Prämien & Provisionen | `prm` | lb-prm-01 … 07 | 7 |
| `sachbezuge` | Sachbezüge & freiwillige Sozialleistungen | `sac` | lb-sac-01 … 21 | 21 |
| `vorstand` | Vorstandsmitglieder (Vorstand) | `vst` | lb-vst-01 … 04 | 4 |
| `sonderzahlungen` | Sonderzahlungen | `son` | lb-son-01 … 05 | 5 |
| `zuschlage` | Zulagen und Zuschläge | `zus` | lb-zus-01 … 08 | 8 |
| `pendlerforderung` | Pendlerförderung | `pen` | lb-pen-01 … 09 | 9 |
| `reisekosten` | Dienstreise & Reisekosten | `rei` | lb-rei-01 … 09 | 9 |
| `vorsorgeleistungen` | Vorsorgeleistungen (BMSVG, Betriebspension, Beteiligung) | `vor` | lb-vor-01 … 11 | 11 |
| `geschenke` | Sachzuwendungen & Geschenke | `ges` | lb-ges-01 … 02 | 2 |
| `lohndumping` | Bekämpfung von Lohn- und Sozialdumping (LSD-BG) | `lsd` | lb-lsd-01 … 13 | 13 |
| `gplb` | GPLB | `gpl` | lb-gpl-01 … 07 | 7 |
| `lohnnebenkosten` | Lohnnebenkosten (Dienstgeberbeiträge) | `lnk` | lb-lnk-01 … 07 | 7 |
| `lohnpfandung` | Lohnpfändung | `pfa` | lb-pfa-01 … 14 | 14 |
| `lohnverrechnung` | Lohnverrechnung (Meldewesen, Abrechnungsfragen) | `lvr` | lb-lvr-01 … 09 | 9 |
| `nachzahlungen` | Nachzahlungen | `naz` | lb-naz-01 … 04 | 4 |
| `arbeitszeitgrenzen` | Arbeitszeitgrenzen | `azg` | lb-azg-01 … 04 | 4 |
| `arbeitszeitmodelle` | Arbeitszeitmodelle (Gleitzeit, Schicht, Kurzarbeit) | `azm` | lb-azm-01 … 07 | 7 |
| `meldepflichten` | Melde- und Informationspflichten | `mip` | lb-mip-01 … 04 | 4 |
| `nachtschwerarbeit` | Nachtschwerarbeit | `nsc` | lb-nsc-01 … 03 | 3 |
| `ruhezeiten` | Ruhezeiten | `rhz` | lb-rhz-01 … 04 | 4 |
| `schwangerschaft` | Schwangerschaft (Mutterschutz) | `sch` | lb-sch-01 … 08 | 7 |
| `uberstunden` | Überstunden | `ues` | lb-ues-01 … 04 | 4 |
| `zeiterfassung` | Zeiterfassung | `zer` | lb-zer-01 … 03 | 3 |
| `schwerarbeit` | Schwerarbeit | `swa` | lb-swa-01 … 05 | 5 |
| `arbeitnehmerschutz` | Arbeitnehmerschutz (ASchG) | `asc` | lb-asc-01 … 16 | 16 |
| `dienstnehmerhaftung` | Dienstnehmerhaftung (Schadenersatz) | `dnh` | lb-dnh-01 … 07 | 7 |
| `gleichbehandlung` | Gleichbehandlung & Diskriminierung | `glb` | lb-glb-01 … 07 | 7 |
| `mobbing` | Mobbing | `mob` | lb-mob-01 | 1 |
| `firmeneigentum` | Firmeneigentum & Sachnutzung | `fir` | lb-fir-01 … 06 | 6 |
| `weisungen` | Weisungen an die Arbeitnehmer | `wei` | lb-wei-01 … 03 | 3 |
| `urlaub` | Urlaub (Anspruch, Entgelt, Verbrauch) | `url` | lb-url-01 … 16 | 16 |
| `krankenstand` | Krankenstand & Entgeltfortzahlung | `krs` | lb-krs-01 … 09 | 9 |
| `entsendung` | Grenzüberschreitender Einsatz & Entsendung | `grz` | lb-grz-01 … 08 | 8 |
| `karenzsonderformen` | Karenz-Sonderformen (Bildungs-, Hospiz-, Pflegekarenz) | `kzs` | lb-kzs-01 … 07 | 7 |
| `elternteilzeit` | Elternteilzeit | `elt` | lb-elt-01 … 06 | 6 |
| `karenz` | Karenz (Elternkarenz) | `kar` | lb-kar-01 … 06 | 6 |
| `kinderbetreuungsgeld` | Kinderbetreuungsgeld & Beihilfen | `kbg` | lb-kbg-01 … 06 | 6 |
| `prasenzdienst` | Präsenzdienst & Zivildienst | `prd` | lb-prd-01 … 06 | 6 |
| `telearbeit` | Teleworking & Heimarbeit | `tel` | lb-tel-01 … 06 | 6 |
| `schutzfrist` | Geburt, Schutzfrist & Wochengeld | `msf` | lb-msf-01 … 05 | 5 |
| `dienstverhinderung` | Dienstverhinderungsgründe & Streik | `dvh` | lb-dvh-01 … 04 | 4 |
| `arbeitskrafteuberlassung` | Arbeitskräfteüberlassung (AÜG) | `aug` | lb-aug-01 … 02 | 2 |
| `entgeltfortzahlung` | Entgeltfortzahlung an Feiertagen | `efz` | lb-efz-01 … 02 | 2 |
| `familienzeit` | Papamonat & Familienzeitbonus | `pap` | lb-pap-01 … 02 | 2 |
| `pflegefreistellung` | Pflegefreistellung | `pfl` | lb-pfl-01 … 02 | 2 |
| `wiedereingliederung` | Wiedereingliederung (Geld, Teilzeit) | `wie` | lb-wie-01 … 02 | 2 |
| `beendigungsarten` | Beendigungsarten (Austritt, Entlassung, Kündigung) | `bnd` | lb-bnd-01 … 44 | 44 |
| `betriebsrat` | Betriebsrat & Betriebsvereinbarungen | `brt` | lb-brt-01 … 36 | 35 |
| `endabrechnung` | Beendigungsansprüche & Endabrechnung (Abfertigung, Vergleich, Stundenguthaben) | `end` | lb-end-01 … 26 | 25 |
| `insolvenz-betriebsubergang` | Unternehmensauflösung & Betriebsübergang (Insolvenz) | `ins` | lb-ins-01 … 08 | 8 |
| `meldungen-verpflichtungen` | Meldungen & Verpflichtungen (Beendigung, Datenschutz) | `mel` | lb-mel-01 … 08 | 8 |
| `beendigungsphase-sonstiges` | Beendigungsphase Sonstiges (Zeugnis, Konkurrenzklausel, Sozialplan, Postensuche) | `bso` | lb-bso-01 … 11 | 10 |
| `beitragsrecht-asvg` | Sozialversicherungsrecht: Beitragsrecht ASVG (Beitragsgrundlagen, Beitragssätze) | `sva` | lb-sva-01 … 16 | 16 |
| `bauerliche-sozialversicherung` | Bäuerliche Sozialversicherung (BSVG) | `bsv` | lb-bsv-01 … 18 | 18 |
| `gsvg-fsvg` | GSVG/FSVG: Selbständige, neue Selbstständige, Abfertigung | `gsv` | lb-gsv-01 … 12 | 12 |
| `krankenversicherung` | Krankenversicherung ASVG (Leistungen) | `kvs` | lb-kvs-01 … 04 | 4 |
| `pension` | Pensionsversicherung (Pensionsarten, Pensionskonto) | `pvs` | lb-pvs-01 … 13 | 13 |
| `aktuell` | WIKU Personal aktuell (Neuerungen, Urteile, Praxis) | `akt` | wk-akt-01 … 12 | 12 |
| `gewerbe` | Gewerbebezogene Personalverrechnung (Güterbeförderung, Gastgewerbe) | `gwe` | wk-gwe-01 … 02 | 2 |
| `kollektivvertraege` | Kollektivverträge (WKO.at — Lohn-/Gehaltsordnungen, KV-Texte je Branche) | `kvt` | kv-kvt-001 … 614 | 614 |
| `zivilrecht-normen` | Zivilrechtliche Normen (ABGB, IPRG, KSchG, ZPO) | `zvr` | ris-zvr-01 … 04 | 4 |
| `arbeitsvertragsrecht` | Arbeitsvertragsrecht (AVRAG) | `avr` | ris-avr-01 | 1 |
| `arbeitsgerichtsbarkeit` | Arbeits- und Sozialgerichtsbarkeit (ASGG) | `agg` | ris-agg-01 | 1 |
| `lohnsteuer` | Lohnsteuer & Einkommensteuer (EStG) | `lst` | ris-lst-01 | 1 |
| `abgabenverfahren` | Abgabenverfahren (BAO) | `abo` | ris-abo-01 | 1 |
| `normen-sonstige` | Weitere Gesetze und Verordnungen (ArbIG, RStDG, StGB, StPO, UGB) | `nso` | ris-nso-01 … 05 | 5 |
| `rechtsprechung` | Rechtsprechung (OGH, VwGH, VfGH, EuGH) und zitierte Normen | `rjs` | rj-rjs-001 … 348 | 348 |
Weitere RIS-Gesetze liegen auf der bestehenden Cluster-Map (`ris-url-01`
neben `lb-url-*`, `ris-asc-01` neben `lb-asc-*`, …; je Gesetz ein
`ris-<cluster-prefix>-<nn>`-Eintrag, mehrere Gesetze teilen sich ein
Cluster fortlaufend — Zuordnungstabelle `LAW_MAP` in
`tools/kb_common.py`).
**1 622 Einträge in 77 Clustern** — Lexis: 571 Einträge in 67 Clustern
(Batch 1: 55, Batch 2: 52, Batch 3: 44, Batch 4: 54, Batch 5: 31,
Batch 6: 41, Batch 7: 97, Batch 8: 134, Batch 9: 63); WIKU: 30
Einträge in 18 Clustern (Batch 1: 13 Fachbroschüren, 3
Arbeitsunterlagen, 2 Casebooks, 12 Hefte „WIKU Personal aktuell“
2026); WKO-KV: 614 Einträge im Cluster `kollektivvertraege` (Batch 1);
RIS: 59 Gesetze, verteilt auf bestehende Cluster plus den neuen
Rechtsgebiet-Clustern (Batch 1); Rechtsprechung: 320 RIS-OGD-Entscheidungen/
Rechtssätze + 5 nichtamtliche EuGH-Textwiedergaben + 23 zitierte
RIS-Normauszüge (Batch 1, gemeinsamer Cluster `rechtsprechung`).
Frontmatter-`topic` = beschreibender ASCII-Slug, das ID-Präfix
(`atz`, `leh`, `kvt`, …) nur im `id` selbst; die Registry
(`tools/build_registry.py`) prüft die Konsistenz beider über die
Cluster-Map (bestehende Präfixe aus `kb.json` abgeleitet, neue Cluster
in `tools/kb_common.py`). IDs werden beim Intake vergeben und danach
**eingefroren** (`tools/catalogs/kv_catalog.json`, `ris_catalog.json`);
neue Dokumente hängen hinten an, Nummern ausscheidender Dokumente
werden nie wiederverwendet. Dateinamen: Layer-2 = Layer-1-Slug
(Umlaute fallen auf Basisbuchstaben — `uberblick`, `beschaftigung`;
ß → `ss`), WIKU mit `wiku_`-Präfix, WKO-KV mit `kv_`-Präfix und RIS
mit `ris_`-Präfix und Rechtsprechung mit `rj_`-Präfix (Kollisionsschutz im
gemeinsamen `dokumente/`).
## Kurationskonventionen (verbindlich)
1. **Sprache:** deutsch, Fachsprache wie im Original; Metadaten-Werte
UTF-8. `topic`/`tags` ASCII.
2. **Eigene Worte (lb/wk):** Kuratierung ist keine Volltextkopie
(Lizenz!). Wörtliche Zitate nur kurz und mit Stand gekennzeichnet.
**Ausnahme kv/ris (2026-09-15):** quellentreu generierte Einträge
(`tools/ingest_sources.py`) — Gesetze sind amtliche Werke, KV-
Lohntabellen müssen zahlenexakt bleiben; diese Dateien sind
Tool-Output, keine manuelle Kuratierung.
3. **Werte immer mit Stand.** Stammt der Wert aus einem Briefing mit
älterem Stand (z. B. Lehrlinge 2024-03, 2025-08), so ist
„(Stand YYYY-MM)" am Wert zu führen. Niemals Werte aus
Trainingswissen ergänzen — nur aus dem Quelltext oder aus
neueren KB-Einträgen (dann mit ID belegt).
4. **Statusmarken wie in RECHTSQUELLEN:** ✅ verifiziert · ⚠ plausibel,
Detailverifikation offen · ❓ bewusst offen. §-Zitate nur, wenn die
Quelle sie nennt; sonst ⚠ mit Verifikationshinweis (RIS).
5. **Dokumentstruktur:** `# <Titel>` → *Quellzeile (Werk, Autor, Stand,
ID)* → `## Zusammenfassung``## Kernwerte & Fristen (Stand YYYY-MM)`
(Tabelle) → `## Rechtsgrundlagen``## Payroll-Relevanz (Odoo)`
`## Verweise`.
6. **Payroll-Relevanz** benennt Odoo-19-Anknüpfungspunkte
(hr_payroll-Engine, Work Entries, `hr.rule.parameter`, SV-BG-Handling,
Meldewesen) als *Hinweise für die Umsetzung*, nicht als Spec.
7. **Verweise:** KB-IDs verwandter Briefings (Breadcrumb-Verweise der
Quelle beachten) + Projektdateien (`RECHTSQUELLEN-*.md`).
8. **Export-Artefakte ignorieren:** Footer „Page n", „Erstellt von …",
abgeschnittene Querverweise nicht rekonstruieren; vermerken, wenn eine
Verweisstelle im Export unvollständig ist.
9. Vorbild/Qualitätsmaßstab: `dokumente/altersteilzeit_uberblick.md`.
## Update-Zyklus (neue Batches — je Quelle)
**Lexis360:**
1. Neue PDFs nach `.lexis360/` kopieren (Export-Namenskonvention
`Lexis360_<slug>.pdf` beibehalten).
2. Intake über das Schwesterprojekt-Tool (`build_lexis_kb.py --extract --source lexis`, im Repo `personalverrechnung`)
oder kuratieren wie bisher von Hand; Layer-1 + Katalog neu,
bestehende IDs bleiben fix.
**WIKU:**
1. Neue PDFs nach `.wiku/` kopieren (Dateinamen der Lieferung
beibehalten; Stand aus „Stand YYYY-MM“/Heft-Monat, sonst Impressum).
2. Kuratieren wie bisher (Layer-2-Einträge `wiku_<slug>.md`).
**WKO-Kollektivverträge (kv):**
1. Neue Seiten nach `.firecrawl/kv-portal/wko-kv/docs/` (Crawl via Firecrawl;
eine Seite = ein KV-Dokument).
2. `python3 tools/ingest_sources.py --source kv` — konvertiert HTML →
Layer-2 (`kv_<slug>.md`), IDs aus `tools/catalogs/kv_catalog.json`
(eingefroren, neue hängen an). `--dry-run` zum Vorschauen.
**RIS-Gesetze (ris):**
1. Neue Gesetze nach `.firecrawl/ris/gesetze/` (Markdown; nur die im Lexis360-Bestand
zitierten Paragraphen).
2. **Zuerst** `LAW_MAP` in `tools/kb_common.py` um das Gesetz ergänzen
(topic, chapter, laufende Nummer im Cluster) — die ID encodiert das
Cluster, danach nie ändern.
3. `python3 tools/ingest_sources.py --source ris`.
**Rechtsprechung (rj):**
1. Neue Markdown-Dateien nach `.rechtsprechung/originale/` (Entscheidungen,
Rechtssätze, EuGH-Textwiedergaben) oder `.rechtsprechung/gesetze/`
(zitierte Normauszüge) legen; XML-Originale nicht separat intaken.
2. Provenance und Publikations-/Lizenzfreigabe der gelieferten Volltexte vor
einer Versionierung prüfen; EuGH-Wiedergaben bleiben als nicht amtlich
gekennzeichnet.
3. `python3 tools/ingest_sources.py --source rj` — IDs aus
`tools/catalogs/rj_catalog.json` bleiben eingefroren; lange Volltexte
werden an Absatzgrenzen in H2-Chunks geteilt.
**Alle Quellen gemeinsam:**
3. `python3 tools/build_registry.py` — validiert das gesamte Layer-2
(Schema, topic↔Präfix, Batches, cross_refs) und schreibt
`kb.json` + `INDEX.md` neu (beide generiert, nie manuell editieren).
4. Reindex + Eval gegen die Gates (Skill `pv-rag-agent`:
Recall@8 > 0,9, Zitier-Präzision): `python3 -m agent.cli ingest`,
dann `python3 -m agent.cli eval [--answers]`.
5. `agent/README.md` und `.agents/MEMORY.md` pflegen.
## Copilot-Konsum
`kb.json` listet jeden Eintrag mit ID, Titel, Stand, Cluster,
Rechtsgrundlagen, Tags und Pfaden auf Layer 1/Layer 2. Für
Retrieval/Skills: Eintrag = Chunk-Einheit; `id` als Zitatchlüssel;
`stand` für Aktualitätsfilter; `cross_refs` für Graph-Nachbarschaft.
Die Volltexte (Layer 1) sind lokal vorhanden, aber nicht Teil des
Versionskontroll-Korpus — ein Copilot-Deployment braucht daher einen
separaten, lizenzkonformen Bereitstellungspfad für Layer 1 (❓ offen).