- lb-krs-08 (Krankenstand-EFZ): die offene ⚠-Marke 'EFZG/AngG-
Stufenabsätze vor Implementierung gegen RIS verifizieren' ist mit
der AP4-Umsetzung erledigt — ✅-Eintrag mit Fundstellen
(EFZG GesNr 10008308 § 2 Abs 1; AngG § 8 Abs 1/2/2a, Stand 2026-09);
lohnsteuerliche Einordnung laufender Bezug bleibt ⚠ (ohne §-Zitat)
- MEMORY.md: AP7-Status (Wochengeld = KV-Leistung, Rollenklärung
gegenüber der Plan-Annahme) und offene Reste
Rollenklärung (lb-msf-03, ASVG § 162 Abs 1): Wochengeld ist eine
KV-Leistung — die ÖGK zahlt; der Dienstgeber stoppt das Entgelt in
den Beschäftigungsfristen (MSchG §§ 3/5), liefert die Bemessungsdaten
(Arbeits-/Entgeltbestätigung folgt mit AP8) und fuehrt die Abfertigung
Neu auf fiktiver Grundlage.
- models/mutterschutz.py: _at_msch_status (Kalendertage/Arbeitstage/
Episode aus der neuen Urlaubsart 'Mutterschutz-Frist', WET ATP_MSCH),
_at_wochengeld — volle Wochengeld-Rechnung § 162 Abs 3 ASVG:
Ø-Netto der drei Referenzmonate (letzte 13 Wochen) x (1 + satzungs-
SZ-Prozentsatz 14/17/21 %, Parameter at_msch_sz_prozentsatz,
vor Erstverwendung mandantenseitig zu verifizieren) ÷ Kalender-
tage; Fallback kurzes DV (lb-msf-03)
- Regel MSCH_ENTGELT: Entgelt-Stopp je Arbeitstag der Frist (negativ,
Brutto; Tagesatz-Helper mit EFZG geteilt)
- Fiktive BV-Grundlage § 7 Abs 4 BMSVG (RIS verifiziert):
Monatsentgelt-Ø der letzten drei Kalendermonate vor dem Versicherungs-
fall der Mutterschaft inkl. anteiliger Sonderzahlungen x Bezugs-KT/30,
im _at_bv_basis_laufen-Hook neben der Krankengeld-Fiktion (AP4)
- Rechenfaelle docs/rechenfaelle/mutterschutz.md; 4 Tests
(Entgelt-Stopp + fiktive BV, §-162-Abs-3-Arithmetik, Wirkungslosigkeit
ohne Frist, kurzes-DV-Fallback); Optionen dokumentiert:
Sonderwochengeld § 163, Ruhen § 166, Karenz-Referenzmonat § 7 Abs 4 Z 1-3
Company-Stammdaten-UI (views/company_views.xml): res.company-Formular-Inherit mit Reiter "Lohnverrechnung (AT)" — BKNR (10-stellig, Pflicht für alle Meldewesen-Läufe), Lohnsteuernummer (9-stellig), Bundesland (DZ-Satz), WKO-Mitglied (DZ-Pflicht), WF-Wien. Sichtbar nur mit hr_payroll.group_hr_payroll_user.
Multi-Company-Record-Rules (security/security_rules.xml): ir.rule-Records für l10n.at.payroll.l16, .l16.line, .kind, .frist — jede:r Payroll-User sieht nur die Daten der Companies, auf die sie/er Zugriff hat (company_ids aus ir.rule-Standard-Mechanik; Muster: hr_payroll-Engine).
19.0.5.1.0. 100/100 grün (Wegwerf-DB).
Fristenkalender (models/fristenkalender.py — l10n.at.payroll.frist): alle lohnverrechnungsrelevanten Melde- und Zahlungsfristen je Company und Jahr (kuratiert: lb-sva-11, lb-mel-08, lb-lvr-04/05): SV/mBGM 15. Folgemonat (Gutschriftprinzip, Respirofrist 3 Tage, Verzugszinsen ab Tag 16), DB/DZ/KommSt 15. Folgemonat, KommSt-Jahreserklärung Ende Maerz, Lohnzettel L16 + Arbeitsstaettenmeldung + §-109a Ende Februar, Schwerarbeitsmeldung Ende Februar (blockiert, ASchV-Datenmodell fehlt). Auto-Erzeugung per ir.cron monatlich am 1. (SV/DB/DZ/KommSt) + jaehrlich am 1. Jaenner (Jahresfristen). Ueberfaellig-Faerbung + Sprungaktion zur GP7-Deklaration (L16; mBGM-Verlinkung im Privatmodul via fristen_private.py).
Jahres-Retro-/Aufrollungslauf (models/jahresretro.py — Wizard l10n.at.payroll.jahresretro.wizard): Kontrollsechstel-Verpflichtungslauf § 67 Abs 10 EStG (Pruefung je AN auf SZ-Ueberhang und Guenstig-Vergleich Fixsaetze vs. Tarif; Handlungsempfehlung fuer die Odoo-Korrektur-Pipeline: Refund-Payslips + Neuberechnung). Optional §-77-Abs-3/4-Aufrollung (15.-Jaenner-Grenze; Krankengeld-Blocker). SV-Aufrollung rollt auf den Beitragsmonat (GP4-Beitragsmonat); mBGM-Storno als Folgeaktion (GP7 art=ST).
Mitteilungsfile-Import (models/mitteilungsfile.py — Wizard): ELDA-Rueckantwort-XML (mitteilung_{Protokollnummer}.xml) parsen, Fehler/Warnungen lesbar aufbereiten; XSDs lokal beschafft (.firecrawl/ris/elda/). Dateibasiert (Praemisse P7): Upload durch den Mandanten.
2027-Parameter-Rahmen (data/rule_parameters_2027.xml): NUR Struktur (WF-Vektor-Default + AV-Staffel tiers=[] da § 2a AMPFG aufgehoben BGBl I 62/2026). KEINE Werte aus Trainingswissen — der Wartungszyklus beschafft die offiziellen 2027-Werte.
B14-laengster-Urlaubs-Teil: verifiziert — aktuelle Implementierung ist praktisch korrekt (erster Urlaubsmonat, _at_sz_bereits_bezahlt gegen Doppelauszahlung); mehrmonatig gesplittete Urlaube sind ein Randfall mit vorwaertsblickenden Planungsdaten, dokumentiert ohne Code-Fix.
Tests: test_gp8 (6 — Frist-Definitionen, Cron-Idempotenz, Ueberfaellig-Logik, Mitteilungsfile-Parser, Import-ohne-Datei-UserError, Jahresretro-ohne-Daten). 100/100 gruen (Wegwerf-DB). 19.0.5.0.0.
mBGM/JASV (models/mbgm.py — DM-ORG 42.7.0 E.32, BEST MB, Version 02): Paket PS (BKNR/DGNA/BZRM/GSUM/ANZM) → mBGM G1 (REFW/VSNR/FANA/VONA/VSUM/VERG=1) → Tarifblock T1 (BSGR/VVON) → Verrechnungsbasis BS (VBTY/VBBT) → Verrechnungsposition V1 (VPTY/VPVZ/VPTA/RSVZ/RSUM). KEIN DN/DG-Zweig-Split: T01 = GESAMT-Prozentsatz des Tarifsystems je Beschäftigtengruppe (Parameter at_mbgm_tarif, normativ: laufend 39,05 % = KV 7,65 + PV 22,80 + AV 5,90 + UV 1,10 + WF 1,00 + IESG 0,10; SZ 37,55 % = DN KV 3,87 + PV 10,25 + AV 2,95 + DG 20,48). Abschläge als EIGENE Verrechnungspositionen je Basis: A03/A02/A01 = Minderung AV auf 0/1/2 % (§ 2a AMPFG, nur DN-AV, je Verrechnungsbasis AB UND SZ), A09 = UV-Entfall 60, A10 = AV+IE-Entfall Pensionsanspruch (Konkurrenz a4: sperrt Staffelabschlag), A15 = PV-Halbierung Bonusphase — konsistent mit der GP4-§-2a-DN-seitig-Konvention. BV (BMSVG): eigene Verrechnungsbasis BV (ungedeckelt, GP5) + Position V01 1,53 %. RSUM = Basis x Satz (mBGM-Tarifierung), Konsistenz-Check gegen GP4-Payslip-Beitragssummen ±0,10 € als Prüfwarnung. Storno: R1-Sätze mit REFU/VSUM wie Original. Fehlanzeige: Paket ohne mBGM-Sätze (ANZM 0). Geringfügige/fallweise ohne Parametrisierung: listenweiser Abbruch (keine Tarif-Erfindung; BSGR B044/B045/B010/B030 aus dem SV-Tarifsystem pflegen).
Versichertenmeldung (models/versichertenmeldung.py — DM-ORG E.29, BEST VR, Version 03, Satzlänge 772): M3 vor Arbeitsantritt / M4 (7 Kalendertage ab PV-Ende) mit deklarativer Event-Erkennung über die Meldungs-Registry (l10n.at.payroll.vr.event) — idempotente Läufe, Dimona-auto-Idee ohne write-diff-Hacks. Felder: BKNR/VSNR/GEBD/FANA/VONA (Namenssplit am letzten Leerzeichen), ADAT/EBSV, BBER 01-04 aus l10n_at_personalgruppe/lehrling, GERF (Kataloggehalt vs. GFG), FRDV, BVAB/BVJN aus dem GP5-BMSVG-Flag, VWAZ (Stunden x100, neu ab 01.01.2026), AGRD aus dem hr.departure.reason-Mapping (Standard 00). Fallweise Anmeldung (BEST MA, SART 32, Version 07, Länge 450): MVP je Anmeldetag am Vertragsbeginn; tagesgenaue Einsatztage via Work-Entry-Auswertung = dokumentierter Rest.
NSchAB-Branche als Company-Flag (l10n_at_nschab): B001-T01 + 3,80 % (Schlechtwetterentschädigung, ÖGK-Tarifsystem Normalbetriebe mit Schlechtwetterentschädigung).
Tests: test_meldewesen_private (2 — mBGM-Satzhierarchie mit A03 je Basis aus November-Fixture + GSUM-Konsistenz; VR M3/M4 mit Registry-Idempotenz und AGRD). Rechenfälle docs/rechenfaelle/meldewesen.md. 19.0.7.0.0.
ELDA-Fixsatz-Framework (models/elda.py) nach DM-ORG 42.7.0 Kapitel C.1/C.2+E.1-E.3: Fixlängen-Sätze ohne Feldtrennzeichen (a/a-n linksbündig, Grundstellung blank; n rechtsbündig, Grundstellung 0, führende Nullen, KEINE Interpunktion — Beträge EURO-Cent kaufmännisch gerundet, Prozentsätze x1000 mit 3 Nachkommastellen), Encoding ISO-8859-15 (Standard-Encoding für Fixlängen), optionaler Dateiheader (DHKZ 2x blank + DHVN 01 + ENCD), Vorlaufsatz SART 00 (BEST/VSTR/VERS) + Schlusssatz SART 99 mit SANZ; SANR lückenlos ab 1 je Datenbestand; CRLF als Satztrenner (Praxis-Annahme, DM-ORG normiert keines — Parallellauf verifizieren).
Lohnzettel Finanz L16 (models/lohnzettel_l16.py): Informationssatz I1 (SART I1, Länge 1.100, Strukturversion 03) + Mitteilungssatz L1 (SART L1, Länge 3.500, Lohnzettelversion 28 — zwingend ab 01.03.2026) mit vollständiger, PDF-verifizierter Feldtabelle (~210 Felder inkl. Kinderblock 15x123 ab Pos. 1501; DM-ORG 42.7.0 E.13/E.14). KZ-245-Formel: KZ 210 = Bruttobezüge gem. § 25 GESAMT (DM-ORG-Feldbeschreibung) — die Formel 210-215-220-230-243 ergibt die laufende Steuerbemessung, per Konstruktion konsistent mit der GP3-§-66-Kette (Ableitung aus l10n_at_bemessung/steuerbefreiung_68/s67_abs und Regelcodes; bewusst KEIN paralleles KZ-Klassifikationsfeld). Arbeitsstättenmeldung § 34 Abs 6 ASVG: SART 45 (Länge 300, Version 02, BEST AD/VSTR ST Statistik Austria) je AN am 31.12. aus dem Dienstort-Partner (GKZ manuell, Warnung wenn fehlt) — im selben Jahreslauf (Nutzer-Entscheidung 5.1).
Kind-Datenmodell (models/kind.py — l10n.at.payroll.kind): Stammdaten-Wartung des Familienbonus Plus (Nutzer-Entscheidung 5.3: FB+ rechnet NICHT im Lohnsteuerkern — bei Unterschreiten der Steuer auf 0 erfolgt die Geltendmachung über die Arbeitnehmerveranlagung); Felder für den L16-Kinderblock (Familienname/Vorname/Geburtsdatum/VSNR/Staatsangehörigkeit/FB+-Monate voll/halb, Alterstaffel 166,68/58,34).
Stammdaten (models/meldewesen.py): Beitragskontonummer BKNR + Lohnsteuernummer (res.company), Gemeindekennziffer GKZ (res.partner), VSNR-Formatprüfung LLLPTTMMJJ auf hr.version.ssnid (Prüfzifferalgorithmus = dokumentierter Rest, SVS-Quelle beschaffen), eSV-Abmeldegrund AGRD-Mapping auf hr.departure.reason (Standard 00); fallweise-Beschäftigungs-Flag auf hr.version (§ 33 Abs 1a Z 1 ASVG).
Belege (AP6): Lohnzettel AT (ir.actions.report auf hr.payslip, AT-Layout mit Bezügen/DN-Abzügen/DG-Anteilen/Netto), Monatsdienstliste (mBGM-Kontrollschicht je AN) + Monatsjournal (je Lohnart Summen je Lauf) auf hr.payslip.run als QWeb (models/monatsreports.py + report/belege_reports.xml; account.report wird in keinem HR-Modul genutzt).
Tests: test_elda_l16 (4 — Feldformatierung/Cent-Beträge/skala, Bestands-Assembly SANR/SANZ/CRLF/ISO-8859-15/Dateiheader, L16-Lauf mit positionsexakten Assertions aus der November-Fixture, Arbeitsstätten-Satz). 19.0.4.0.0.
Buchungsmatrix nach dem Oesterreichischen Einheitskontenrahmen (KFS/BW 6; Nutzer-Referenz-Exemplar .additional_docs/KFSBW6_13072017_RF.pdf): Hook _configure_payroll_account_at (models/account_chart_private.py) ordnet Regelkonten, Journal SLR (Default = Gehaelterkonto 6200, BE-Muster) und das NET-Konto 3850 "Verbindlichkeiten aus Lohn und Gehalt" (Nutzer-Entscheidung 5.1; Anlage + reconcile, l10n_at-Standardchart hat es nicht) je Company zu — getriggert beim Chart-Load (_post_load_data) UND ueber die <function>-Datendatei data/hr_payroll_account_private.xml fuer Bestands-Companies (erster <value> einer function ist die Record-ID-Liste, convert.py-Semantik), idempotent. Konto-Suche exakt zuerst, Praefix-Fallback nur bis eine Stelle laenger — verhindert Matches auf Odoo-Scaffold-Konten chartloser Firmen (6000 darf nicht 600000 "Expenses" matchen).
EKR-Debit-Split Arbeiter/Angestellte (Nutzer-Klaerung: 600-619 Loehne, 620-639 Gehaelter — "6000 Gehaelter/6200 Loehne" war gegen die eigene KFS/BW-6-Referenz vertauscht): l10n_at_personalgruppe am Vertrag (models/hr_version_private.py) + Override-Feld l10n_at_account_debit_arbeiter je Regel; Option A minimal (Nutzer-Entscheidung 5.2: Grundentgelt 6000, Sozialaufwand 6500, Abgaben 6600/6601/6602; Zuschlaege/UeStd/Praemien/SZ und BV (EKR 644 ohne Split) buchen fuer Arbeiter bis zur Referenzbuchhaltungs-Fixierung auf die Angestellten-Konten — fehlende Konten warnen, keine Erfindung). models/account_posting_private.py: Gesamtueberschreibung von _prepare_slip_lines nach Upstream-Muster (Odoo-Pin 19.0+e.20260910) mit einzeiliger Kontosubstitution — Odoo bietet dafuer keinen Override-Punkt; Verhalten testgepinnt. Matrix: KVGEO/URL_UE 6200/6000, Zuschlaege 6225, UeStd 6310, Praemien 6230, B13/B14 6240, DN-SV/LSt auf 3600/3540, NET 3850, SVDG-Block 6560/6500 auf 3600, BVG 6440 (Fallback 6400) auf Credit 3600 (Abfuhr via KV-Traeger, Nutzer 5.3), FLAFDB 6661/6601 auf 3541, KOMMST 6660/6600 auf 3550, DZ 6662/6602 auf 3542.
NET-Umbenennung NETTO -> NET (Odoo-Konvention: action_register_payment, net_wage und Negativ-Netto-Erkennung filtern code == NET) inkl. 4 Bestands-Suiten. Odoo-19-Fund: das Anlegen einer Structure kopiert die Regeln des hr_payroll.default_structure (BASIC/GROSS/NET/...) via Feld-Default in rule_ids — die kopierte Default-NET-Regel kollidierte im result_rules-Dict (Netto fiel auf 0); Fix: <function> in salary_rules_private.xml archiviert die Kopie (active=False; KEIN Unlink — struct_id ist NOT NULL und historische Lohnkontolinien behalten ihre Regel-Referenz; One2many blendet Archivierte aus). Journal-Default-Konten duerfen nicht Receivable/Payable sein (Odoo-Constraint); Rundungscents bucht Odoo als Adjustment Entry aufs Journal-Default.
depends: + l10n_at, hr_payroll_account_iso20022 (SEPA-Auszahlung, Plan 4.5; kein VRV/MVAG — gem360-Bruecke). Tests: test_account_private (4: RF-BUCH-1..4 — Kontenplan-Mock ohne Chart-Install, Move-Balance, Kontenzeilen je Matrix, Arbeiter-Split, Geringfuegiger, Fallback/Warnung) — gesamt 88/88 gruen auf Wegwerf-DB (frischer -i-Lauf). Rechenfaelle docs/rechenfaelle/buchhaltung.md. 19.0.6.0.0.
New .agents/skills/opendataloader-pdf/ for structured PDF extraction
(Markdown/JSON with bounding boxes, hybrid AI mode, scanned-PDF OCR)
based on the upstream odl-pdf agent skill (Apache-2.0), with its helper
scripts verify-json.py and hybrid-health.sh vendored under scripts/.
Core disciplines: discover options from the installed --help (flags
drift between releases), batch all inputs into one invocation (JVM per
call), verify the result against intent (zero exit is not success:
auto-triage skips enrichment, fallbacks drop quality, empty pipes),
treat extracted content as untrusted, never commit extracted full
texts of the licensed .lexis360/.wiku sources.
Workflow wiring: AGENTS.md skill selection routes any PDF extraction
to the skill; wissensbasis/SKILL.md cross-references it for difficult
PDFs and spot-checks, with Layer-1 batch intake deliberately kept on
build_lexis_kb.py (frozen IDs and --check depend on the text shape).
ODL 2.5.8 installed in the user venv ~/.local/lib/python (not the
Odoo .venv); all documented flags verified against the installed CLI
on real .lexis360/ sources.
CHANGELOG-GP5-Eintrag; Plan-Abschnitt-10-Update (Fensterkonvention mit Monatsjubiläum statt Folgetag, Wiederzulassung auch bei kurzem Vor-AV, eigene BV-Grundlage, bewusste Nicht-Ziele); MEMORY-Handoff (84/84 auf Wegwerf-DB, GP6/GP7/GP8-Anschlüsse, GP4-Beobachtung SV-SZ/§-49-Abs-3-Z-7 offen, D4-Fund zur hr.version-date_version-Synchronisation).
Laufender Beitrag (§ 6 BMSVG): Regel BVG (Kategorie ATP_DG, ohne Nettoeffekt) auf EIGENER, ungecappter BV-Grundlage — §-49-bereinigt, ohne HBG-/Jahresdeckel (§ 6 Abs 5 iVm § 49 ASVG) und ohne §-67-Abs-3/6-Zeilen (§ 49 Abs 3 Z 7 ASVG); bewusst kein Rückgriff auf die SV-SZ-Basis des Kerns (Nutzer-Entscheidung eigene BV-Grundlage; deren Z-7-Ausschluss fehlt — GP4-Beobachtung bleibt offen dokumentiert).
Beitragsfreier erster Monat taggenau: Fenster [Eintritt, Eintritt + 1 Monat), Beitragspflicht ab Monatsjubiläum (15. 06. → 15. 07.; KB-Beispiel lb-vor-03: 4.500/30 × 17 = 2.550 — die ab-Folgetag-Lesart war ein Off-by-one und wurde verworfen); 30-Tage-Aliquotierung über die Lohnsteuertage (Teilmonate ohne Doppelabzug); Monatsende-Klippe (Eintritt 31. 01.): Fenster bis Monatsultimo, Pflicht ab Folgemonatserstem (ABGB-Fristrechnung); AV ≤ 1 Monat zur Gänze beitragsfrei.
Wiederzulassung binnen 12 Monaten → Beitragspflicht ab dem 1. Tag; Vor-AV beliebiger Dauer (auch < 1 Monat, Nutzer-Klarstellung) und schlägt auch die Kurz-AV-Freiheit des laufenden AV (OGH 9 ObA 30/16a; Suche über frühere hr.version mit contract_date_end im 12-Monats-Fenster). Sonderzahlungen werden nicht um das Fenster gekürzt, bleiben frei nur bei Beitragsmonat (voller Datumstag, taggenau) im Fenster. Geringfügig Beschäftigte und Lehrlinge sind erfasst — BVG läuft auch im §-53a-Fall.
Anwartschaft (§ 15: gutgebrachte Beiträge + Erträge, keine Monatsentgelt-Staffel) on-the-fly aus validierten Läufen; Anwartschaftsreport (QWeb auf hr.employee) und Endabrechnungs-Wizard (§§ 14-17: §-14-Abs-2-Verfügungsmatrix, < 36 Beitragsmonate sperrt immer, §-16-Fälligkeit am Ende des zweitfolgenden Monats, 6-Monats-Erklärungsfrist, 5 Verfügungsoptionen) — die Auszahlung erfolgt durch die MV-Kasse, nicht über den Payslip.
Stammdaten: Vertrags-Flag l10n_at_abfertigung_neu (§ 46) + Modell l10n.at.bv.kasse (Leitzahl für eSV/mBGM; Seed der 7 Kassen-Namen noupdate, lb-gsv-11 — Leitzahlen aus Mandats-Unterlagen) + Mitarbeiter-Felder l10n_at_bv_ertraege/l10n_at_bv_monate_extern (Kassen-Auszug).
Bewusst nicht: §-7-BMSVG-Fiktivfälle (dokumentierte Option), Geringfügigen-Jahreszahlung + 2,5 % (GP7), BV-Provider (Option).
Tests: test_bv_private (10 Fälle, RF-BV1-10); gesamt 84/84 grün (frischer -i-Lauf auf Wegwerf-DB). Rechenfälle docs/rechenfaelle/abfertigung.md. 19.0.5.0.0.
Kern-Parameter für den DG-Beitrag zur betrieblichen Mitarbeitervorsorge (1,53 vH des monatlichen Entgelts und der Sonderzahlungen, unverändert seit 1. 1. 2003) gemäß dem verifizierten Rahmen in RECHTSQUELLEN-Privat.md Abschnitt 8 (§ 6 Abs 5: Bemessung nach § 49 ASVG ohne GFG/HBG; § 46, § 1 Abs 2 Z 1: Geltung für private AV ab 2003, geringfügig Beschäftigte und Lehrlinge erfasst; lb-vor-03, Stand 2026-08).
Konsumiert vom General-AT-Modul (GP5, Regel BVG). 19.0.3.1.0.
Doku-Registry zum GP4-Bau nachziehen, damit der nächste Agent-Thread
aus dem Repository booten kann (agent-memory-Skill) und die verbindliche
Rechtslage den verifizierten Stand trägt.
Rechtsauflösung A7-Rest: Die Aufwertung der Geringfügigkeitsgrenze ist
für 2026 gem. § 810 Abs 3 ASVG ausgesetzt — deshalb fehlte der 2026-
Eintrag in der RIS-Anmerkungsreihe; GFG 2026 = 551,10 €, DAG-Grenze
826,65 € (TASY MINGRDAGP1, § 1 DAG als Normzitat per ÖGK-Tarifsystem —
lb-sva-12-'ohne Normzitat' erledigt), §-19a-Selbstversicherung 2026 =
83,49 €/Monat (TASY KVPVBTG19A) mit Direct-Zahlung an den Träger.
KB-KONFLIKTE A7 + konsolidierte 'Nächste Schritte' entsprechend
fortgeschrieben (A3 blockiert nur mehr die Formel-7-Optimierung,
nicht den GP4-Kern).
RECHTSQUELLEN-Privat Abschnitt 4: GFG-Zeile auf 2026-Wert korrigiert,
§-53a-Zeile (UV 6,50 € abgeleitet/Selbstversicherung 83,49 €),
§-2a-DN-Klarstellung, SZ-DG-Sätze, Altersausschaltungen, DAG- und
§-49-Zeilen ergänzt (inkl. Korrektur eines GP0-'geringfähig'-
Tippfehlers bei § 53b).
Plan Abschnitt 10: GP4-Freigabestatus-Update (Umsetzung, Rechtsfunde,
Offenliste GP7/GP8); CHANGELOG-Eintrag M5; MEMORY: neuer Fokus
(GP5 Abfertigung Neu als Nächstes), GP4-Konventionen (11 Punkte,
darunter Geringfuegig-Identifiers nach der Nutzer-Korrektur des
Sprachfehlers 'geringfähig' → geringfügig).
Anbindung der privatwirtschaftlichen Structure an den GP4-Kern nach
dem bewährten GP3-Muster (dünne 1-Zeilen-Regeln; Logik und Werte
verbleiben im Kern — hr.salary.rule.struct_id ist required, geteilte
Kern-Regeln sind mechanisch unmöglich).
SVDN_SZ-Nachtrag (§ 67 Abs 12): Die SV-DN auf sonstigen Bezügen war in
GP3 nur als Bemessungsbestandteil der §-67-Lohnsteuer wirksam, fehlte
aber als eigene Abzugszeile — das Netto in §-67-Monaten war um den
SV-DN(SZ) zu hoch (RF-L1: 290,79 € nach §-2a-Korrektur). Die Erwartungen
in test_01/test_20 wurden entsprechend korrigiert.
DG-Block (Kategorie ATP_DG, ohne Nettoeffekt): SVDG_KV/PV/AV/UV/WF/IESG
laufend, SVDG_SZ_* auf Sonderzahlungen, SVDG_UV_GFG (§-53a-Pauschale
geringfügig Beschäftigter) sowie die Lohnnebenkosten FLAFDB (§ 41
FLAG), KOMMST (§ 9 KommStG) und DZ (§§ 122/126 WKG, nur bei Company-
Flag l10n_at_wk_mitglied; Satz je Betriebsstätten-Bundesland).
Gemeinsame LNK-Basis in payslip_private.py (_at_lnk_basis): monatlich
gezahlte Arbeitslöhne nach Zufluss, ohne §-67-Abs-3/6-Bezüge (Kern-Flag
l10n_at_s67_abs), lit-f-Befreiung nur für FLAF und DZ (KommSt ohne),
Freibetragsstaffel 1.095/1.460 €.
Rechenfälle docs/rechenfaelle/sozialversicherung.md (RF-SV-1 bis -7)
und §-2a-Korrekturvermerk in lohnsteuer.md. Tests: test_sv_private
(8 Fälle); gesamt 74/74 grün auf odoo_dev.
AP4-Kernbau (D3-Vorfinanzierung, freigegebener GP4-Bauplan): Die
Dienstgeberseite der Sozialversicherung wird sektorneutral im Kern
gebaut, damit sowohl das General-AT-Produkt als auch die GemBG-Schiene
sie konsumieren (keine Fork-Werte, payroll-Skill-Architekturregel).
Neu in models/sozialversicherung.py:
- SVDG laufend (ÖGK Normalbetriebe 2026: 20,98 %; Wien 21,23 %) und auf
Sonderzahlungen (§ 54 ASVG: 20,48 % inkl. UV 1,10 und IESG 0,10);
- Geringfügigkeit § 5 Abs 2 ASVG mit Hochrechnung bei untermonatiger
Beschäftigung (SZ zählen nicht) und §-53a-Abs-1-UV als Monatspauschale;
- beitragsfreie Bezüge § 49 Abs 3 ASVG als Jahres-Kumulative je DN
(8 €/AT, 1.000/365/186/300/2.000 €/J, Homeoffice 3 €/Tag × 100);
- altersabhängige Satzausschaltungen als Stichtags-Datumfelder am
Vertrag: AlVG § 1 Abs 2 lit e (AV DN+DG und IESG), ASVG § 51 Abs 6
(UV ab 60/Lehrlinge), § 51 Abs 7 (PV in der Bonusphase je hälftig
DG+DN), FLAG § 41 Abs 4 lit f (LNK-Freiheit ab 60);
- ALV-DN-Staffel § 2a AMPFG, WF-Satzvektor Bundesland × Jahr (Wien
0,75/0,75 ab 1.1.2026, löst die KB-Protokollnotiz), Beitragsmonats-
Allokation (Anspruchsprinzip: Sätze/HBG historisch je Gruppe) und
DAG-Bewertung § 1 DAG (19,4 %, Schwelle 1,5 × GFG, ≥ 2 Geringfügige).
Quellenverifikation (verbindlich): ÖGK-Beitragstarifsystem gültig ab
01.07.2026, TASY-LSWH-Export 2026-03-24, Beitragsrechtliche Werte 2026
und RIS-Normtexte. GFG 2026 = 551,10 € (Aufwertung ausgesetzt gem.
§ 810 Abs 3 ASVG — löst KB-Konflikt A7-Rest); §-19a-Selbstversicherung
2026 = 83,49 €/Monat, DG-UV daraus abgeleitet 6,50 €/Monat.
Rechtskorrektur § 2a AMPFG: Die Staffel mindert nur den DN-Anteil
(ÖGK-Abschläge 'Mind. AV auf 0/1/2 %') und gilt auch für SZ-Beiträge;
bei 2.059,41 € BG sinkt DN-SV von pauschal 18,07 % auf 15,12 %.
test_lohnsteuer wurde entsprechend angepasst (Rechenfälle RF-L1 ff.).
Tests: test_sozialversicherung (14 Fälle); Suite 74/74 grün auf
odoo_dev. Rechenfälle: l10n_at_hr_payroll_private/docs/rechenfaelle/
sozialversicherung.md.
A-Runde rest points verified against the RIS norm texts downloaded
2026-09-11 (.additional_docs/ris_normtexte/, tagesaktuell):
- A1 (corrected): 2026 Ueberstunden measure = EStG para 124b Z 440
lit c idF BGBl I 4/2026 (15 UStd/170 EUR for all pay periods 2026,
Aufrollung 31.05.2026); the previous 'Z 476 lit c idgF BGBl I
43/2026' attribution was a wrong citation (Z 476 = Pendlerpauschale,
para 33 Abs 5 Z 4/Abs 8 Z 2). Z 492/494 belong to the
Feiertagsarbeitsentgelt rule para 68 Abs 1 (Aufrollung 30.09.2026
= Z 494 idF BGBl I 43/2026). lb-zus-07 and wk-akt-01 confirmed.
- A4 (citation structure): ATZ-Geld = Art. 2 para 27 AlVG, Blockzeit
quota scale = Art. 7 para 82 Abs 7/8 (788-884 weeks); the earlier
'para 27 not in force' finding was a search artifact.
- A6 (closed): ALV-Entfall from 2027 = AlVG para 1 Abs 2 lit e idF
BGBl I 62/2026 (NOR40280219, incl. Korridorpension/erfuellte
Anwartschaft, Folgemonat); para 49 ASVG 2027 only removes the
Telearbeitspauschale; AMPFG para 2a repealed 31.12.2026; IESG
surcharge falls away with the ALV contribution.
- A7 (Fundstellen closed): GFG = ASVG para 5 Abs 2, AK-Umlage =
AKG para 61; new open point 2026-GFG (551.10 EUR = 2025 value,
wertkritisch for Pauschale/DAG threshold before GP4/GP8).
- A9 (closed): AZR 2025/2026 = 1,273.99/1,308.39 EUR (ASVG para 293
Anm. 2); AP5 Pfaendungstabelle buildable on EO paras 291a/292.
- A10 (closed): Altrecht border = 1.1.1955 (APG para 1 Abs 3);
'1954' only remains the LZP cohort (para 617 Abs 13 ASVG).
- A3 (unchanged): paras 16 Z 4 lit f + 20 Abs 2 Z 1 EStG norm-
verified; new Verwaltungspraxis not documentable at RIS - remains
the only AP4 blocker. B16 Bezugszeitraum resolved (Z 492/494).
Layer-2 Abgleich notes of the A1 family (5 entries) corrected;
source quotations untouched (Beleg-Prinzip). Wissensbasis gates
green (--registry/--check: 601 entries, 571 curated, 0 problems).
RUNBOOK/PLAN/RECHTSQUELLEN/MEMORY also carry the parallel GP2 doc
sync present in the working tree; GP2 code (addons/) stays
uncommitted for its own commit.
RUNBOOK and agent-memory edits each span several work units at once,
so they are recorded together, after the fact:
- RUNBOOK: new section for primary-source downloads (RIS title-search
conventions and short-title traps, LStR findok XML, ELDA DM-ORG,
SV values, verification-finding discipline); Wissensbasis section
renamed to the two-source corpus (Lexis360 briefings + WIKU
Personal) with the WIKU layers in the architecture table, the WIKU
batch workflow (--source, WIKU_PINS), batch inventory and the full
WIKU-batch-1 conflict list
- MEMORY: completed entries for the KB legal-basis cross-check, the
dev-host setup and GP1 runtime acceptance (including the
Core/GemBG regular_pay install blocker) and the WIKU batch-1
intake; 8.12 RIS-clarification list extended by the WIKU conflict
families; current focus and files-that-matter updated to the
601-entry corpus
First WIKU Personal intake (30 licensed publications, source Stands
2023-07 to 2026-09), integrated into the shared curated corpus per
the integration model of 2026-09-10: one corpus, the work field
distinguishes the sources, WIKU entries use the wk-<prefix>-<nn> id
space on the existing cluster map, Layer-2 filenames carry the wiku_
prefix. The corpus grows to 601 curated entries in 69 clusters.
- 30 publications: 13 Fachbroschueren, 3 Arbeitsunterlagen, 2
Casebooks (geloesste LV-Praxisfaelle) and the twelve 2026 issues of
the periodical 'WIKU Personal aktuell' (new cluster akt with
wk-akt-01..12); second new cluster gwe for the trade-specific
brochures (Gueterbefoerderungsgewerbe, Gastgewerbe); the remaining
16 publications sit on existing clusters (wk-pfa-01 next to
lb-pfa-*: vor, kar, bnd, lvr x2, dvh, bes, rei, gsf, grz, ins,
lsd, pfa, azg, sac, son)
- tooling: multi-source extension of build_lexis_kb.py (--source
lexis|wiku|all for --extract and --check, --registry over both
sources); WIKU metadata comes from an explicit WIKU_PINS table
(slug, cluster, stand, work, chapter, title) instead of Lexis
breadcrumbs - a PDF without a pin is a hard warning and is never
extracted; WIKU page-counter footer lines dropped (WIKU_PAGE_RE);
fix in curated_slugs_for(): the .md suffix is now stripped when the
wiku_ prefix is removed, so the wiku --check completeness gate
passes
- curation: the twelve periodical issues were curated in six parallel
agent groups, each grounded only in its Layer-1 text with a
self-check on frontmatter/structure/cross-refs; the 19 brochure
entries from the prior session were re-validated centrally; 30/30
green
- registry and check green: lexis 571/571 and wiku 30/30 curated,
0 problems; kb.json and INDEX.md regenerated (601 entries, 69
clusters, sources and per-source batch counters recorded)
- wissensbasis README: two-source corpus documentation (layers,
frontmatter schema incl. WIKU works and id spaces, cluster table
with akt/gwe, per-source update cycle)
- flagged for RIS (documented in the entries): wk-akt-01 par. 124b
'z 440/492' (pre-BGBl stand of 2026-01) and the wk-akt-07
Mitarbeiterpraemie citation contradiction 'z 478 vs z 477'
(z 478 lit f binding); the Feiertagsarbeitsentgelt/UEStd repair is
resolved via BGBl I 43/2026 in wk-akt-04 and matches the binding
legal position; new conflict family wk-akt-11 (SV employee shares
on par. 68 benefits caught by the par. 20 Abs 2 Z 1 EStG deduction
ban, 'Formel 7' at risk); wk-akt-10 free-contractor DN rate 17.57%
vs arithmetic 17.07% without WF; wk-akt-07 Wien WF 1.5% (lb-lnk-05
family); ALV-Entfall draft vs final act (wk-akt-03 vs 04); 2027 SV
values provisional (wk-akt-05/06)
Documentation-only updates from the General-AT track (2026-09-10/11)
that had been left uncommitted; no code changes.
- RECHTSQUELLEN-Privat: new section 13 (cross-check of all 571 KB
legal_bases citation strings, ~130 statutes, against the binding RQ
inventory; outside-scope delimitation) and procurement-list
extensions in section 11 (AVRAG, ASVG contribution/notification
block, EStG, KommStG/BAO, AUEG, UrlG, BMSVG, IESG, LohnkontenVO,
Mutterschutz-/Karenz block as scope decision)
- IMPLEMENTIERUNGSPLAN-Privat: new section 2.1 (knowledge-base binding
regime, KB as curated secondary source with ID and Stand), GP2-GP8
fine mechanics backed by KB entries, new open points 8.11 DZ
surcharge decision, 8.12 KB conflict families for RIS clarification
and 8.13 scope candidates; source reference updated to the
odoo_19.0+e.20260910 tree
- CHANGELOG: 2026-09-10 entries for the primary-source procurement
(19 RIS statutes via RIS title search incl. short-title traps, LStR
2002 findok XML, DM-ORG 42.7.0 with L16/L17 checklists, SV values
2026), the KB legal-basis cross-check and the plan knowledge-base
integration; the 'Krankengeldumlage par. 62 ASVG' false premise is
resolved and corrected in RQ and plan
- README and module README: dev-host runtime documentation (PostgreSQL
18.6, Python 3.14 venv with editable install of the merged tree,
odoo_dev database, test invocation via .venv/bin/python -m odoo;
GP1 test_kv_katalog green, 8 tests 0 errors)
- .gitignore: odoo_19.0+e.20260910/ and .venv/ replace the removed
odoo/ and odoo_enterprise/ checkouts; ignore local tooling
(.zed-hours/, /tools/ anchored to the repo root so
personalverrechnung/tools stays fully tracked)
Bring the README cluster registry table up to the current corpus state
(571 entries in 67 clusters, batches 1-9): append the 27 clusters of
batches 7-9 in batch order, update the rows of clusters extended by
later batches (praemien 7, sonderzahlungen 5, schwangerschaft 7,
arbeitnehmerschutz 16), replace the stale counts paragraph (277/40,
five chapters) with the full batch breakdown and all seventeen
briefings chapters, and align two sentences with the binding skill
rules: new clusters extend all four tool structures including
CHAPTER_TOPIC_MAP for chapter-qualified topic collisions, and values
may only be sourced from the source text or newer KB entries.
Table rows were generated from the tool's CLUSTERS/TOPIC_TO_PREFIX
registries and the Layer-1 catalog, so names, ID ranges (including
the by-design gaps brt/end/bso) and counts are exact.
Ninth Lexis 360 intake (63 briefings, source Stands 2025-01 to
2026-08), extending the corpus to 571 curated entries in 67 clusters.
This batch opens the 'Sozialversicherung' chapter (seventeen chapters
in total now) and extends the corpus from employment/payroll topics
into the social-insurance body of law behind them.
- 5 new clusters: beitragsrecht ASVG sva (16: Beitragsgrundlagen,
beitragsfreie Bezugsbestandteile par. 49 Abs 3, Beitragssaetze,
Tarifsystem, Faelligkeiten/Verjaehrung, Auftraggeberhaftung,
Selbst-/Weiterversicherung), baeuerliche Sozialversicherung bsv
(18: Beitrag und Beitragsvorschreibung, Pflichtversicherung und
Grenzen, Beitragsgrundlage Einheitswert/Optionen/Pauschale,
freiwillige Versicherung, Mehrfachversicherung KV/PV,
Jagdunfall), GSVG/FSVG gsv (12: Selbstlaendige, neue
Selbststaendige, Gesellschaftsformen und sv-Zuordnung,
GSVG-Abfertigung), krankenversicherung kvs (4: ASVG-Leistungen),
pensionsversicherung pvs (13: Pensionsarten, Pensionsberechnung,
Pensionskonto, Pensionsanpassung, Teilpension)
- intake cleanup: four text-identical duplicate exports removed; the
five-fold truncated export filename of the BSVG freiwillige
Versicherung briefings renamed explicitly (Selbstversicherung UV /
Weiterversicherung KV+PV / Hoeherversicherung PV / Mitarbeiter- und
Selbstaendigenvorsorge); Mehrfachversicherung KV/PV disambiguated;
ss-URL-encoded filename normalized
- tooling: BATCH 9; TOPIC_MAP pins for all eight Sozialversicherung
topic groups (including 'abfertigung-fur-selbststandige' -> gsv so
the bare 'abfertigung' keyword fallback cannot steal the GSVG
severance briefing for the end cluster); keyword block 9 ahead of
block 8 (bauerliche/pensionsart*/krankenversicherung/gsvg/fsvg/
selbststandige); five new CLUSTERS/TOPIC_TO_PREFIX entries
- cross-batch reconciliation: lb-swa-03's open points (Teilpension
ab 2026 and Regelpensionsalter, both without norm citation) now
backed by lb-pvs-12/13 (par. 4a APG) and lb-pvs-02 (par. 16
Abs 6 APG), with a documented value conflict on the female
retirement-age cutoff dates (2. 12. 1963/2. 6. 1968 vs 1. 1.
1964/30. 6. 1968) flagged for RIS
- employee contribution rates 2026 cross-checked against
RECHTSQUELLEN-Privat and found identical (KV 7.65/3.87+3.78,
UV 1.10, PV 22.80/10.25+12.55, AV 5.90, IESG 0.10, BVK 1.53,
maximum contribution base 6930 EUR, marginality threshold
551.10 EUR, NSchAB 3.80)
- flagged for RIS: sva-06 AK-Umlage 0.50% (employee share per
source vs employer-only per RECHTSQUELLEN) and par. 53a '14.12'
percent column vs 14.12 EUR/month, sva-08 continued-insurance
ceiling 1843.38 EUR implying an 8085 EUR basis above the 2026
ASVG ceiling (recomputed 1579.44 EUR), bsv-12/13 BSVG ceiling
35-fold (8085 EUR) vs capped worked example (6615 EUR) and
'uniform across all social insurance laws' vs ASVG monthly value
6930 EUR, gsv-11 vs gsv-06 managing-partner thresholds 50%
(2025-07) vs 25% (2026-07), pvs-02/03/04/05 old-law cutoff 1954
vs 1955, pvs-08 bonus maximum 481 vs 493.99 EUR, kvs-03 'par. 120
z 3 ASVG' garble (likely z 4)
- curation in seven parallel agent groups, each with a self-check on
frontmatter/structure/cross-refs; registry and check green: 571
sources, 571 curated entries, 0 problems
Seventh Lexis 360 intake (97 briefings, source Stands 2026-06 to
2026-08), extending the corpus to 374 curated entries in 56 clusters.
This batch opens five further briefings chapters ('Urlaub &
Karenzierung', 'Schwangerschaft & Elternkarenz', 'Krankenstand &
Arbeitsunfall', 'Dienstverhinderung', 'Ausserhalb des Betriebs-
standortes'; ten chapters in total now).
- 16 new clusters: urlaub (14), krankenstand (9), grenzeinsatz grz
(8: Ausland/Entsendung/Standortverlegung), karenzsonderformen
(7: Bildungs-/Hospiz-/Pflegekarenz), elternteilzeit (6), karenz
(6), kinderbetreuungsgeld (6), praesenzdienst (6), telearbeit
(6), mutterschutz msf (5: Schutzfristen/Wochengeld), dienst-
verhinderung dvh (4, incl. Streik), arbeitskraefteueberlassung
(2, AUEG), entgeltfortzahlung an Feiertagen efz (2), papamonat
(2), pflegefreistellung (2), wiedereingliederung (2); existing
clusters extended: arbeitnehmerschutz 12 -> 16 (Arbeitsunfall/
Berufskrankheit), schwangerschaft 1 -> 7
- documented gaps closed: Bildungskarenz (kzs), Abfertigung Alt
(lb-kar-01), Entgeltfortzahlung an Feiertagen (lb-efz-01/02),
Gefahrenevaluierung und Arbeitsverbote (lb-sch-04), Telearbeit
(tel cluster)
- three truncated duplicate export filenames (auslandstatigkeit_
sv_tatigkeit_in x3) renamed explicitly before extraction
- cross-batch reconciliations: lb-sch-01's Gefahrenevaluierung gap
now fully closed (-> lb-sch-04), lb-tzb-02's open Bildungskarenz
reference resolved (-> lb-kzs-01; terminology conflict with the
tzb briefing flagged for RIS)
- frontmatter fixes: seven entries of a stalled first curation
pass used invented topic values (papamonat-und-familienzeit-
bonus, geburt-schutzfrist, wochengeld) -> normalized to the
schema values (familienzeit, schutzfrist)
- flagged: asc-15 worked example draws a 42-day contingency
(1st-service-year pattern) against its own stage table (56
days), aug paragraph garble ('11503/1503 Abs 30 ABGB', likely
1153 Abs 30), grz-08 OGH follow-duty case law vs. explicit
source criticism, efz-01 36-hours compensatory time off,
dvh-04 pay claims of non-striking employees unsettled per
source
- note: the first curation pass stalled at 82/97 (no progress
from 14:43); the remaining 15 entries (asc-13..16, dvh/efz/pfl,
grz-08, aug) were re-run by three fresh parallel agents after
the user canceled the stuck one
Consolidate the binding knowledge-base rules (layer architecture,
licence decision D1, id freeze, D2 frontmatter schema, curation
conventions, batch workflow, validation gates, intake pitfalls)
from README/RUNBOOK/MEMORY into a dedicated agent skill so every
new thread reads them before planning Wissensbasis work.
- new licensed source corpus .wiku/ (WIKU Personal publications:
Fachbroschueren, Arbeitsunterlagen, Casebooks, 'WIKU Personal
aktuell'; gitignored like .lexis360/, never committed)
- integration model: one shared corpus with a single kb.json, ids
wk-<prefix>-<nn> on the existing cluster map, the work field
distinguishing the sources, Layer-2 filenames prefixed
wiku_<slug>.md; pipeline to be a multi-source extension of
build_lexis_kb.py (no fork) -- follow-up after batch 7
- AGENTS.md skill selection gains the wissensbasis entry
Sixth Lexis 360 intake (41 briefings, source Stands 2025-06 to
2026-08), extending the corpus to 277 curated entries in 40 clusters.
This batch opens two further briefings chapters, 'Arbeitnehmer-
schutz' and 'Verhaltenspflichten' (five chapters in total now).
- 7 new clusters: arbeitnehmerschutz (12, ASchG incl. Gefahren-
evaluierung, Arbeitsstätte/-mittel/-stoffe, Arbeitsunfall,
BauKoG, Bildschirmarbeit, HitzeschutzVO, Strafbarkeit),
dienstnehmerhaftung (7, incl. Mankohaftung), gleichbehandlung (7,
incl. Einkommensbericht/Gehaltsoffenlegung), firmeneigentum (6,
Sachnutzung Dienstwagen/PC/Telefon/Internet), weisungen (3),
schwerarbeit (5, joins the Arbeitszeit chapter), mobbing (1)
- parser hardening: breadcrumb wrap detection extended to wraps
after the first separator dot ('... Evaluierung |\nAutor ...')
- one fossil id purged (lb-mip-05 -> lb-swa-05, keyword-fallback
misroute caught by the prefix guard)
- cross-batch reconciliations: lb-beh-04's 'Belaestigung' gap
closed (-> lb-glb-02/03/07), lb-sch-01's 'Gefahrenevaluierung
und Arbeitsverbote' partially closed (-> lb-asc-01); glb-07 vs
beh-04 divergence on the Aufstiegsschaden measure documented
for RIS clarification
- flagged: GKV citation 2020 (asc-01) vs 2021 (asc-07), 3-DHG
limitation dispute, open SV/payroll-tax treatment of deducted
damages amounts (dnh), Schwerarbeit Teilpension 2026 without
norm citation, ASchV/NSchG not yet covered in RECHTSQUELLEN
- note: two curation agents were canceled mid-run and their
remaining scope (asc-04..12, glb/mob) was re-run by fresh
agents; the three partial asc entries were verified complete
before acceptance
Validated: --registry 277 entries/40 clusters, --check 0 problems,
structural scan, py_compile.
Fifth Lexis 360 intake (31 briefings, source Stands 2025-12 to
2026-07), extending the corpus to 236 curated entries in 33 clusters.
This batch opens the third briefings chapter 'Arbeitszeit' (AZG
working-time law, the structural backbone for Work-Entry-based
payroll).
- 8 new clusters: arbeitszeitgrenzen (4), arbeitszeitmodelle (7,
incl. Kurzarbeit and Gleitzeit/Schicht), meldepflichten (4),
nachtschwerarbeit (3), ruhezeiten (4), schwangerschaft (1),
uberstunden (4), zeiterfassung (3); plus lb-jug-08 appended to
the jugendliche cluster
- one URL-encoded export filename (sharp-s) normalized; no
duplicates; no fossil ids this time - the specific-first keyword
ordering held
- cross-batch reconciliation: three procurement gaps closed and
back-referenced - 'Jugendliche - Arbeitszeit' (lb-jug-04 and
lb-jug-05 -> lb-jug-08) and 'Aufzeichnungspflicht, Formen der
Zeiterfassung' (lb-jug-05 -> lb-zer-01/02)
- RECHTSQUELLEN cross-checks: 68-EStG overtime free limits 2026
(15 UStd/170 EUR) confirmed via lb-zus-07; the Kurzarbeit/
Lehrlinge corpus conflict is now triangulated - lb-azm-05
(2026-07) sides with lb-leh-07 (apprentices excluded since
2023) against lb-leh-11's '100%'
- flagged batch-5 points: NSchG contribution 2026 (3.8%) cited
without BGBl evidence (lb-nsc-01), 'para 7 Abs 1' vs 'Abs 6 AZG'
citation divergence for the overtime refusal right
(lb-ues-01/04), MAV-START EU conflict (lb-rhz-03), KAB-Richtlinie
computing the 39.05% partial amount with outdated SV rates
(lb-azm-06), 12-Abs-2a-vs-12a designation conflict (lb-zer-01)
- batch-6 candidates updated in the RUNBOOK (Entgeltfortzahlung an
Feiertagen, Motivkuendigung, Gefahrenevaluierung u. a.);
README cluster table extended to batches 1-5 incl. the third
chapter
Validated: --registry 236 entries/33 clusters, --check 0 problems,
structural scan over all 236 curated docs, py_compile.
Fourth Lexis 360 intake (54 briefings after removing one identical
re-download, source Stands 2026-06 to 2026-08), extending the corpus
to 205 curated entries in 25 clusters. Focus of this batch: the
enforcement and employer-contribution side of payroll (all in the
'Entgelt: Anspruch & Abrechnung' chapter).
- 6 new clusters: lohndumping (13, LSD-BG incl. Sicherungsmittel and
cross-border posting), lohnpfandung (14, EO garnishment mechanics),
gplb (7), lohnnebenkosten (7, FLAF-DB/DZ/IESG/AK-Umlage/WBF/KommSt),
lohnverrechnung (9, L16/Lohnzettel, mBGM, 109a, Aufrollung,
Aufrechnung, Darlehen), nachzahlungen (4)
- cross-batch reconciliation: 'Darlehen und Vorschuesse'
(lb-sac-13 -> lb-lvr-02) and 'Lohnzettel und Beitragsgrundlagen-
nachweis' (lb-sac-21 -> lb-lvr-05) dangling references closed,
cross_refs updated
- tool hardening: assign_ids returns mismatch warnings instead of
appending to an out-of-scope variable (latent NameError that only
fired when a mismatch actually occurred), keyword fallback
reordered specific-before-generic (batch-4 lesson: generic
'zuschlag' stole iesg_zuschlag before the topic map was pinned),
7 fossil ids from the unpinned pass purged and reassigned
- RECHTSQUELLEN cross-checks (lnk cluster): FLAF-DB 3.7%, KommSt 3%,
IESG 0.10%, WBF (other provinces 1%), Freibetrag staffel confirmed;
flagged: lb-lnk-02 states the DB Freibetrag condition INVERTED vs
the verified text (correct staffel evidenced via lb-lnk-03),
lb-lnk-05 WBF Wien 1.5% vs 1.0% (RIS clarification needed), plus
pfa Grundbetrag naming conflict (lb-pfa-03/05), Existenzminimum 2022
(500/515 EUR, lb-pfa-12/14), mutilated statute citation in
lb-lsd-13 (RIS check), 124b citation variants in the corpus
(Z 440/Z 449 vs verified Z 476 lit c idgF BGBl I 43/2026)
- batch-5 candidates updated in the RUNBOOK (pfändungsrechtliche
Behandlung von Sonderzahlungen, Rueckzahlung von Darlehen u. a.);
README cluster table extended to batches 1-4
Validated: --registry 205 entries/25 clusters, --check 0 problems,
structural scan over all 205 curated docs, py_compile.
Third Lexis 360 intake (44 briefings, source Stands 2025-06 to
2026-08), extending the corpus to 151 curated entries in 19 clusters.
All batch-3 topics sit in the 'Entgelt: Anspruch & Abrechnung'
chapter - this is the most payroll-core batch so far (SZ tariff
mechanics, surcharges, commuter allowances, travel expenses, BMSVG).
- 6 new clusters: reisekosten (9), pendlerforderung (9),
vorsorgeleistungen (11), zuschlage (8), sonderzahlungen (4),
geschenke (2); plus lb-ent-11 (Ausbildungskosten-Rueckerstattung)
appended to the entgelt cluster
- two URL-encoded export filenames (%c3%9f = sharp-s) normalized
before intake
- cross-batch reconciliation: lb-prm-04's dangling reference to
'Sonderzahlungen - Steuer' resolved against the new lb-son-04
(and lb-son-03 for the SV side); cross_refs updated
- curated entries cross-checked against the verified legal inventory
(RECHTSQUELLEN-Privat.md): 67-EStG staffel, 68-EStG free limits,
BMSVG core values confirmed; deviations flagged, notably the
124b-Ueberstundenmassnahme 2026 citation in lb-zus-07 - the
briefing cites 'Z 440 lit c'/'BGBl I 4/2026' while the verified text
is Z 476 lit c idgF BGBl I 43/2026 (Aufrollung bis 30. 9. 2026),
and lb-ent-01's blanket 120 EUR for 68 Abs 2 (verified: 170 EUR
2026)
- further flagged points: lb-pen-09 table value 3,672 EUR (likely
print error, arithmetic 2,448), PendlerVO-vs-BMF-FAQ divergence
(lb-pen-01), 183-day rule Finanz vs UFS (rei), teleworker trips
Finanz vs BFG/VwGH (lb-rei-07), SV status of staff participation
foundations (lb-vor-01), customer gifts without SV value limit
(lb-ges-02)
- batch-4 candidates updated in the RUNBOOK (Abfertigung Alt,
Corona-Kurzarbeit u. a.); README cluster table extended to
batches 1-3
Validated: --registry 151 entries/19 clusters, --check 0 problems,
structural scan over all 151 curated docs, py_compile.
Second Lexis 360 intake (52 briefings, source Stands 2025-06 to
2026-08), extending the corpus to 107 curated entries in 13 clusters.
Covers the second briefings chapter 'Entgelt: Anspruch & Abrechnung'
and further Beschaeftigungsverhaeltnisse topics.
- 7 new clusters: behinderte (4), entgelt (10), geschaftsfuehrer (5),
leitende-angestellte (1), pramien (6), sachbezuege (21), vorstand
(4); plus lb-leh-16 (Weiterbeschaftigung nach Ende der Lehrzeit)
appended to the frozen lehrlinge sequence
- tool hardening: batch values validated as integers 1..N (multi-batch
operation), dynamic batch labels in kb.json (batches summary) and
INDEX header, and a new --extract warning when a frozen id's prefix
no longer matches its cluster - this caught the lb-jug-08 fossil from
the unpinned first pass, corrected to lb-sac-21 before any curation
referenced it
- removed one duplicate browser export (geschaftsfuhrer_arbeitsrecht
(1).pdf, identical extracted text)
- corpus conflicts and open points flagged in the entries: Klein-
wohnungsgrenzen lb-sac-09 vs lb-sac-10, Pensionisten-Beguenstigung
lb-sac-02 (LStR Rz 104 divergence), EUR 14.53 Parkplatz without
SV/LSt categorization in the source (lb-sac-18), incentive trips
only at LStR-Rz level (lb-sac-16), simplified 6% tariff in lb-prm-04
(the verified 67-EStG staffel in RECHTSQUELLEN-Privat.md governs)
- dangling briefing references recorded as batch-3 candidates in the
RUNBOOK (Bildungskarenz, Telearbeitspauschale, Personalrabatte bis
2015, Lohnzettel/BGN u. a.)
- README cluster table extended to batches 1-2; RUNBOOK/MEMORY updated
Validated: --registry 107 entries/13 clusters, --check 0 problems,
structural scan over all 107 curated docs, py_compile.