# Agent Memory — odoo-at-payroll ## Current focus **AP15-A gesetzliche Abfertigung Alt umgesetzt — Privat 141/141, Kern 54/54 Tests grün** (2026-09-15, uncommittet bis Nutzerfreigabe; Privat **19.0.13.0.0**, Kern **19.0.9.0.0**): - **Recht am Originalwortlaut verifiziert (.ris/):** § 23a Abs 3 AngG verlangt für den Elternaustritt ein **ununterbrochen fünfjähriges** DV (Hälfte des §-23-Betrags, Deckel 3 Monatsentgelte) — Vorschlag bei < 60 Monaten korrigiert (0-Faktor + Wizard-UserError). § 67 Abs 3 EStG (RIS-Wortlaut): Tarif-LSt **auf den laufenden Arbeitslohn** × Mehrfaches, zwingend günstiger als 6 %. Neu: getrenntes, bestätigtes Feld `abf_alt_monatslohnsteuer`/ `l10n_at_abf_alt_monatslohnsteuer` (Tarif-LSt des laufenden Monats nach persönlichen Verhältnissen) — Bruttolohn wird NICHT über die §-62-Engine tarifiert. Rechenfall lb-end-01 exakt: 101,96 × 10,5 = 1.070,58 (< 1.134 = 6 %). - **Privat:** `models/endabrechnung.py` ABF_ALT-Helfer (Staffel, Mehrfach-Vorschlag eltern/tod, 6 %, Vervielfachung, günstige LSt), Regel `ABF_ALT` (neutral/keine/abs3/pfandung_beendigung), `LST_ABF` seq 72, `PFAENDUNG_END` seq 77 (Beendigungstopf − LST_ABF, Gesamttopf + beendigung), LNK-Fix in beiden Kopien (`_at_lnk_basis` zieht Abs-3/6-Regeln nur mit bemessung laufend/sonstig ab), Wizard-Felder + Validierungen (BMSVG-Neu- Sperre außer eingefroren, AGRD 02/06-Regeln, Eltern < 5 J), Payslip-Tab, Konten `rule_abf_alt` 6200/6000 (vorläufig), `rule_lst_abf` → 3540. `.get()`-Zugriffe auf `result_rules` in `models/pfaendung.py` durch Membership-Prüfung ersetzt. - **Kern:** LST_ABF in KZ-260-Salden (Lohnsteuer), außerhalb KZ 210/220 (test_01b). Kern-Hilfer `_l10n_at_monatslohnsteuer` des Subagenten wieder ENTFERNT (ungenutzt, semantisch irreführend) samt test_02b. - **Tests:** endabrechnung 13 (inkl. Arbeitnehmerkündigung- UserError, Eltern < 5 J, Wizard-E2E, Pfändungsbasis), pfändung 12 (test_09b Beendigungstopf), Privat-Suite 141/141 (`ap13a_test`), Kern-Suite 54/54 (auf `ap13a_test` mit Privatmodul — **Achtung: L16-Tests referenzieren `l10n_at_hr_payroll_private.` `structure_at_privat`, Kern-Rein-DB scheitert an setUp, ist Bestandsverhalten**). Python/XML/`git diff --check` grün. - **Offen:** AP15-B (freiwillige Abfertigung § 67 Abs 6, 6 %-Bänder + rollierende 12-Monats-Basis), AP15-C (§ 67 Abs 8 lit a Vergleichssummen). Wizard-Transient NOT-NULL-Warnung für `departure_reason_id` ist kosmetisch (Alt-Zeilen). Nicht committen ohne Nutzeranforderung. **AP14-A Endabrechnungs-Zyklus umgesetzt — 133 Tests grün** (2026-09-14, Commit **`ee94f46`** nach Nutzerfreigabe): - **Rechtskorrektur gegen Originalwortlaut (.ris/, RIS-Gate erledigt):** § 67 Abs 6 (freiwillige Abfertigung/Abfindung) = 6 %-Bänder (Z 1 ¼ der letzten-12-Monate-Bezüge, Deckel 9×HBG; Z 2 Dienstzeit- bänder), NICHT Fünftel → nach AP15 verschoben. Fünftelregelung gilt § 67 Abs 8 lit b (Kündigungs-/Abgangsentschädigung) — diese sind SV-PFLICHTIG (Umlegung auf Kündigungsfrist, § 11 Abs 2 ASVG) und LNK-PFLICHTIG (FLAG § 41 Abs 4 lit b nennt nur Abs 3 und 6). § 11 Abs 2 ASVG verifiziert: PV-Verlängerung für UEL-Bezug UND Kündigungsentschädigung, bei beiden ZUERST Kündigungsentschädigung, dann UEL (sequentielle Fenster); 6-WT/5-AT-Tage-Umrechnung ist Verwaltungspraxis (lb-url-15), nicht Gesetzeswortlaut. § 67 Abs 8 lit d (UEL-Zweikomponenten) wortwörtlich bestätigt. § 19e Abs 2 AZG (+50 % auf NAZ-Guthaben) verifiziert. - **Umsetzung (Privat 19.0.12.0.0):** `models/endabrechnung.py` mit Regel-Flags `l10n_at_sv_verlaengerung` (urlaubsersatz/abgang) und `l10n_at_s67_fuenftel`; UEL-Helfer (Divisor 26/22, SZ-Tageswert 2×SZ-Basis/12); Upstream-Replicas mit Pin-Kommentar für `_at_lnk_basis` (Abgang VOR der Freibetragsstaffel) und `_l10n_at_sv_basis_laufen_monate` (Verlängerungsanteile mit Tageswert-Deckel HBG×Tage/30, Standardanteile volle Monats-HBG); `_l10n_at_bemessung_laufen` += Fünftel-Tarifteil (4/5, Deckel 12.474 = 9×HBG/5) ohne Sechstel-Effekt. - **Regeln:** URL_ERSATZ_LFD (laufend, verlaengerung=urlaubsersatz), URL_ERSATZ_SZ (sonstig), ABGANG (neutral, sv_art=laufend, verlaengerung=abgang, fuenftel), ZEIT_GUTHABEN (laufend ×1,5, KEIN §-68), ZEIT_SCHULDEN (negativ), END_ABRECHNUNG_VORSCHUSS (neutral/keine — Netto-Abzug § 293 Abs 3 EO). Eingaben ATP_UEL_TAGE/ABGANG/ABGANG_FFRIST_TAGE/ZEIT_GUTHABEN/ZEIT_SCHULDEN/ ABRECHNUNG_VORSCHUSS; Parameter at_endabrechnung (Divisoren). - **Wizard** `l10n.at.payroll.endabrechnung.wizard` (ACL, Views, Menü seq 42): sammelt UEL-Tage/Abgang/Frist/Zeit/Vorschuss, Vorschau über flüchtigen new()-Payslip, Button legt Endabrechnungs-Lauf im Austrittsmonat mit vorbefüllten Eingaben an. Achtung: hr.version- Strukturfeld heißt `structure_id` (nicht struct_id). - **Fund beim Testlauf:** Eingabetypen-Datei fehlte zunächst in der Manifest-Datenliste → NOT-NULL input_type_id; zwei Testassertionen mussten SV-DN-Differenzen bzw. den KVGEO-Standardanteil im März berücksichtigen. - **Tests** test_endabrechnung_private.py (6): UEL-Zweikomponenten (1.320/220 €, Sechstel +5.280), SV-Tage-Schema (23→31, 12→14, 6→21) + Monatsverteilung, Abgang-Fünftel (Sechstel unverändert, LNK +9.000, Umlegung 16/26 Tage), Vorschuss-Netto (Abgaben neutral), Zeitguthaben ±, Wizard E2E. Suite **133/133** in ap13a_test. - **Offen AP14-B/AP15:** Vergleich § 67 Abs 8 lit a + freiwillige Abfertigung § 67 Abs 6 (beides mit Abf-Alt-Günstiger-Maschine, rollierende 12-Monats-Basis), Prämien-Beendigungs-Rollung, Meldewesen-Schnittstellen („Ende des Entgeltanspruchs“ in mBGM, gesonderter Lohnzettel LStR Rz 911a). **AP13-B Pendlerförderung umgesetzt — 127 Tests grün** (2026-09-14, Commit **`9ff977e`** nach Nutzerfreigabe): - Neu `models/pendler.py`: Modell `l10n.at.payroll.pendler.erklaerung` (effektiv datiert, L-34-/Pendlerrechner-Nachweis als Attachment, pauschale_art klein/gross, fahrten_stufe drittel/zwei_drittel/voll, arbeitgeber_kfz, ticket_art keines/werkverkehr/oeffi, ticket_kosten_monatlich, bezugsumwandlung). Company-Related OHNE store=True (Muster pfaendung — store+required bricht den Insert mit NotNullViolation), ACL + Company-Record-Rule + Views/Menu. - Parameter `at_pendler` 2026: klein [[20,696],[41,1356],[61,2016]], gross [[2,372],[21,1476],[41,2568],[61,3672]], pendlereuro_km_jahr 6.0. Staffel „nächst-höhere Stufe erst bei MEHR als dem unteren km-Wert“ → ganzzahlige Grenzen 20/41/61 bzw. 2/21/41/61. - Engine-Anbindung (Privat-Overrides): `_l10n_at_bemessung_laufen` − PP (LZP = Jahreswert × Stufe/360 × Lohnsteuertage, lb-pen-09); `_l10n_at_absetzbetraege` + PE als **Jahreswert × Stufe** (km × 6 € × Stufe) — kumulative Engine verbraucht Absetzbeträge über die Rollung, NICHT pe × 12. PP/PE ohne SV-/LNK- Wirkung (getestet). - §-26-Z5-Regeln: oeffi-Ticketkosten mindern PP (§ 16 Abs 1 Z 6 lit i); PP → 0 ⇒ PE = 0 (Fixkopplung lb-pen-04). Werkverkehr datengetrieben über die L-34-Reststrecke. Bezugsumwandlung sperrt PP/PE NICHT (Ticket = steuerpflichtiger laufender Bezug). Kfz sperrt beide. - Tests test_pendler_private.py (10): voller Monat 58/150 €, Staffeln, 1/3-Stufe, untermonatig 3,87 € (lb-pen-09-Beispiel), Kfz-Sperre, Ticket-Reduktion/PE-Entfall, Bezugsumwandlung, effektiv datierte Auswahl, E2E-LSt-Wirkung. Zwei Testfixes beim ersten echten Lauf: `unit_amount` existiert nicht auf hr.expense (→ quantity), PE-Erwartungswert 40 € (20 km × 6 × 1/3) statt 50 €. - **Fund:** die AP13-A-Tests waren im AP13-A-Commit NICHT registriert (tests/__init__.py fehlte) — die „114 Tests grün“ liefen ohne die Reisekosten-Tests. Jetzt registriert; Suite 127/127 grün. Beim ersten echten Reisekosten-Testlauf: `hr.expense` hat kein `unit_amount`-Feld (Odoo 19: quantity/price_unit/total_amount) — Test-Helfer korrigiert. - Doku docs/rechenfaelle/pendler.md (RF-PEN-1…5 + offene Punkte: erhöhter VAB 853 €/Zuschlag 804 € als Quer-LSt-Rest, L-34-1-Monats-Meldeprozess). - Version **19.0.11.0.0**. **AP13-A Reisekosten Inland committed — 127-er Suite grün** (2026-09-14, Commit **`3f307a0`**): - Privatmodul **19.0.10.0.0** verwendet das Odoo-19-Standardmodul `hr_payroll_expense`: genehmigte, eigenfinanzierte Spesen werden über `EXPENSES` mit dem Payslip verbunden und gegen das Verbindlichkeitskonto abgestimmt. `rule_expenses` bucht auf 3850; die AT-Buchungsmatrix ergänzt diese Zuordnung. - Neu `models/reisekosten.py`, Parameter `at_reise_inland`/`at_km_geld`, Regeln `EXPENSES`/`REISE_STEUERPFLICHTIG`/`REISE_NETTOAUSGLEICH`, Spesen-View und Rechenfälle `docs/rechenfaelle/reisekosten.md`. Abgedeckt: dokumentiertes Inland-Taggeld, Nächtigung (belegt oder Pauschale), Kilometergeld, ÖV-Dienstreise und Familienheimfahrten. Kilometergrenzen: 30.000 km über Dienst-/Heimfahrten sowie 12.600 € bei niedrigem Satz; Familienheimfahrt: eine je Woche und keine Kumulation mit steuerfreiem Taggeld. - Der vollständige Spesenbetrag wird genau einmal über `EXPENSES` ersetzt. Nur der §-26-Überhang wird als laufender Bezug mit LSt/SV/LNK behandelt; die neutrale Nettoausgleichsregel verhindert eine Doppelersetzung. - Tests `test_reisekosten_private.py`: Taggeld-Cap, Kilometergrenze, abgabenpflichtiger Überhang/Nettoausgleich. Vollständiger Odoo-Lauf in `ap13a_test`: **114 Tests, 0 Fehler**; Python/XML-Checks grün. - Ausdrücklich noch offen in AP13-B: Pendlerpauschale, Pendlereuro und Jobticket. Nicht im AP13-A-Scope: Auslandssätze, §3 Abs1 Z16b-KV-Sätze und die detaillierte Einsatzortdauer-Verfolgung. - Vorheriger Dokumentations-/Ignore-Commit: **`91ac9e5`**. AP13-A ist derzeit **noch uncommittet**. **AP 12b wertgebundene Sachbezüge umgesetzt — 166/166 Tests grün** (2026-09-14, freigegeben): - **Kern** `l10n_at_hr_payroll` (19.0.8.0.0): neues `hr.salary.rule.l10n_at_sv_art` (`folgt` Default = rückwärtskompatibel, `laufend`/`sonstig`/`keine`) trennt die SV- von der LSt-Zuordnung; `_l10n_at_sv_art` / `_l10n_at_sv_brutto` und die SV-Basis-/§49-/SZ- Pfade angepasst. Notwendig für Hardware-Verkauf (LSt sonstig/SV laufend) und Bonusmeilen (LSt neutral/SV laufend). Kritischer Fix: bei Odoo `DefaultDictPayroll` nur nach `code in result_rules` lesen — `.get()` materialisiert eine leere künftige Regel und brach die LSt- Engine mit `KeyError('total')`. Tests test_17/18 in test_lohnsteuer. - **Privat** `l10n_at_hr_payroll_private` (19.0.9.7.0): neues `models/sachbezuege_private.py` — Model B `hr.version`-Stammdaten + Mitarbeiter-Relateds für Wagen, Wohnung, Parkplatz, Handyprofil; Werte `at_sb_wagen`/`_co2`/`_wohnung`/`_parkplatz`; Regeln `SB_PARKPLATZ`/`_WOHNUNG`/`_WAGEN`/`_GEBRAUCHT`/`_BONUSMEILEN`/ `_HANDY`, Eingaben `ATP_SB_HANDY`/`_GEBRAUCHT`/`_BONUSMEILEN`, View `views/sachbezuege_views.xml`; E2E tests test_sachbezuege2_private.py. - **Abgabenlogik**: Wagen/Wohnung/Parkplatz sowie Handy-Mehrkosten laufend voll abgabenpflichtig. Handy-Verkauf unter Buchwert: SV- laufend + LSt-sonstig + LNK. Bonusmeilen: Drittlohn, nur SV-laufend (Kategorie ATP_DG, also kein Auszahlungsnetto-Brutto), kein LSt-/LNK- Brutto; darauf entfallende DN-SV mindert aber nach §62-Kette die LSt- BG und damit die laufende LSt. Parkplatz als laufend: ⚠ Quelltext lb-sac-18 nennt die Abgabenkategorie nicht ausdrücklich — vor Produktivsetzung RIS/LStR prüfen. - **Recht/MVP-Grenzen**: Wagen §4 SBWVO (CO₂ EZJ, E=0, voller/halber Wert/Kostenbeitrag); Wohnung §2 Abs7a (m² BL, Norm/Besorger kombiniert 55,5 %, klein ≤35=0, >35–45 −35 % erste 12 Mon.); Parkplatz §4a (14,53), Handy lb-sac-15, Bonusmeilen lb-sac-08. Nicht automatisiert: Wagen Mini/Pool/Wechsel/Mehrfach, Wohnungs-12-Monats-Retro/Mehrnutzer, Lohnkonto-Nachweise. Rechenfälle RF-SB-7…9 in `docs/rechenfaelle/sachbezuege.md`. - AP12 ist damit abgeschlossen; **AP13 Reisekosten & Pendlerförderung (inkl. Jobticket)** als nächster AP. Commit **`8efea77`** (2026-09-14, nach Nutzer-Freigabe) enthält AP12a+b. **AP 12a steuerfreie Sachbezüge umgesetzt — 159/159 Tests grün** (2026-09-13, Freigabe 1/2: Ja/„erst a dann b“): - **Kern** `l10n_at_hr_payroll` (19.0.7.0.0): `hr.salary.rule` Flag `l10n_at_st_frei` (mahlzeit/rabatt/betriebsveranstaltung/jubilaeum/ homeoffice), `_l10n_at_st_frei_ytd`/`_l10n_at_st_frei_freie_laufen` (Spieglung der §-49-SV-Seite, YTD je validierter Lauf), Anbindung `_l10n_at_bemessung_laufen` (−st_frei), Parameter `at_st_grenzen` (8 €/AT · 1.000 €/J · 365 €/J · 186 €/J · 3 €/AT + 100 Tage); Tests test_13…16 in test_lohnsteuer.py. - **Privat** `l10n_at_hr_payroll_private` (19.0.9.6.0): Eingaben `ATP_SB_MAHLZEIT`/`_BETRIEBSVERANSTALTUNG`/`_SACHZUWENDUNG`/`_RABATT`/ `_HOMEOFFICE` (Mahlzeit/HO is_quantity), Regeln `SB_*` (seq 41–44/48, setzen SV- UND LSt-Flag), Parameter `at_sb_werte` (mahlzeit_wert 8.0 = tatsächl. Bonwert, homeoffice_wert 3.0), `_at_lnk_basis` −st_frei (lohnnebenkostenfrei); 6 E2E-Tests tests/test_sachbezuege_private.py (RF-SB-1…6). - **Zwei Bug-Funde (Testlauf)**: (a) Odoo-19-Engine: Zeilen-Total = amount × qty × rate/100 — tagesbasierte Regeln MÜSSEN `result = wert` (Tageswert) + `result_qty = tage` setzen (erste Version `result = wert × tage` = Doppelzählung, Zeile 800 statt 80); (b) Test-Helfer muss Zeilen nach REGEL-Code (SB_*) filtern, nicht nach Input-Code (ATP_SB_*). (c) LSt-Bemessung: ΔLSt + ΔSVDN = Überhang (SV-DN abzugsfähig) — nicht pauschal ΔLSt = Überhang. - **Doku**: `docs/rechenfaelle/sachbezuege.md` (RF-SB-1…6; Rechtsquellen lb-sac-17/07/02, lb-ges-02, lb-tel-04/05 — Homeoffice- Anchor war in einem XML-Kommentar fälschlich lb-sac-15 = Handy, korrigiert). - **Vorbestehend (nicht AP12a)**: `salary_rules_bvg_private.xml` steht ZWEIMAL in der Data-List des privaten Manifests (Log-Warnung „imported twice“) — beim nächsten Touch bereinigen. - **AP12b erledigt** in Commit `8efea77`: Dienstwagen, Kleinwohnung, Parkplatz, Handy und Bonusmeilen mit Model B (`hr.version`-Felder) für wertgebundene sowie Model A (Eingaben je Lauf) für ereignisgesteuerte Werte. Jobticket → AP13. **AP 11 Lohnpfändung umgesetzt — 103/103 Tests grün** (2026-09-13, freigegeben 2026-09-12/13, Plan: `personalverrechnung/PLAN-Restluecken-AP11.md` §AP11): - **Model** `l10n.at.payroll.pfaendung` (models/pfaendung.py): Gläubiger, Vollstreckungsträger, Pfändungsart, Zustellungsdatum, Forderungshöhe, Status aktiv/gesetzt/geloest, Verwalter § 301, Zahlungssperre § 304, Kostenersatz-Variante § 292h, dse_frist/ auszahlung_frist, Rang (computed), Constraint Löse-/Zustelldatum; `hr.version`: `l10n_at_unterhaltspflichten` (0–5), `l10n_at_sz_anspruch`; `hr.salary.rule`: Flags `l10n_at_pfandung_unpfandbar` (AP12-Schnittstelle), `l10n_at_pfandung_beendigung` (AP14/15-Schnittstelle). - **Engine** (hr.payslip): Existenzminimum-Maschine § 291a EO je Topf (laufend/sz13/sz14/beendigung), Pfändungsberechnungsgrundlage § 291 EO (laufend = Bezüge − unpfändbar − SV-DN − LSt), Masse, Kostenersatz § 292h, Regeln `PFAENDUNG` (seq 75) / `PFAENDUNG_SZ` (seq 76), Parameter `at_eo_azr` (2026: 1.308,39) + `at_eo_kostenersatz`, DSE-Report (qweb-pdf), Views/Menu/Security (payroll-Groups + Company-Rule), Rechenfälle `docs/rechenfaelle/pfaendung.md` (RF-PFA-1…7; lb-pfa-03 exakt verifiziert: 33.840 → EX 16.684 / pfändbar 17.156). Version **19.0.9.5.0**. - **Fix im Testlauf:** `result_rules` enthält UNGERUNDETE Rule-Summen (SVDN_KV 79.699167 vs. Zeile 79.70) — Pfändungsberechnungsgrundlage muss die gerundeten Bezugsarten (Cents) verwenden → `round(..., 2)` in `_at_pfa_rule_amount`/`_at_pfa_bruto` (result_rules-Pfad) + finales `round` in `_at_pfaendung_basis` (alle Töpfe). - **Offene Reste** (dokumentiert, nicht geblockt): Unterhaltsexekution 75 %/Koinzidenz, Vorschüsse § 290c, Sachbezugspfändung-Schnittstelle (AP12 jetzt umgesetzt), Beendigungs-Regeldetails (AP14/15), 2027-AZR-Werte. **Commit `018554b`** (2026-09-13, nach Nutzer- Freigabe „commit, dann ap12"). **AP 8 Arbeits-/Entgeltbestätigungen umgesetzt — 152/152 Tests grün — damit ist der AP0–AP10-Nutzer-Katalog komplett** (2026-09-12, AEB-Session; siehe auch Parallel-Session-Notiz unten): - **Satzstrukturen PDF-verifiziert** (DM-ORG 42.7.0 lokal, ODL Pages 493-505): **G.10** AEB-Krankengeld v12 (SART 70/71, BEST AK, 111 Felder, Satzlänge 1392), **G.11** AEB-Wochengeld v10 (SART 75/76, BEST AW, 64 Felder, 1048) — Positionsketten lückenlos geprüft; die .txt-Extraktion des DM-ORG ist UNZUVERLÄSSIG (Feldversatz) — PDF-Extraktion verbindlich. - **Model** `l10n.at.payroll.aeb` (models/aeb.py): art, Episode (verhinderung_von/bis), KZKU, Storno via storno_id (E.10.2.1: nur Fehler/BMGL-Änderung), REFN/Datei/Prüfprotokoll; ELDA- Bestände AK/AW. Fachdaten: Ident/Wohnort (version.private_*), Bank (primary_bank_account_id), EFZ-Anspruch AEFZ/JAGU=1/TAGU=2, Teilentgelt TPR/TVO/TBI, Vorerkrankungen ANV/ANB, VENT, Bezugsblöcke BVO/BBI/BBE+BSUM; Wochengeld: AVER (Ø-Netto 3 Referenzmonate § 162 Abs 3), AVON/ABIS, ANGV=K, **AGRD-Validierung D.22** (SART 75/76 nur 02/03/04/05/06/10/22/24 — unzulässige geleert + Protokoll). - **EFZ-Refaktur:** Phasen-Karte nach **hr.version** verschoben (`_l10n_at_efz_arbeitsjahr_start`/`_l10n_at_efz_phasen`/ `_l10n_at_efz_stufe_am`) — Payslip-Status und AEB teilen die Maschine; AP4-Tests unverändert grün. Fund: `setze(None)` übernimmt Grundstellung NICHT — löschen nur über Leerstring. - 4 Tests (SART 70 mit 76-Tage-Episode: AEFZ 06, TPR1 50, TVO1 13.10., VENT 12.10.; SART 75 mit AVER; Storno 76; AGRD-Validierung). Version **19.0.9.4.0**. - **Offen (MVP-Reste):** Prüfkatalog-Verifikation (Parallellauf, P7), KE/UE-Zeilen, EIN/APFT-Feiertage, VOAB/VOBI, Prämien-/ Provisionsausweis (seit-2025-Felder). **Abstimmung mit der Parallel-Session: PLAN-Restluecken AP11+ unabhängig startbar, AEB nicht mehr als Restlücke.** **Gap-Reevaluierung + Restlücken-Plan AP11 ff. freigegeben und versioniert** (2026-09-12): Cluster-Abgleich Wissensbasis (601 Einträge/69 Cluster) gegen den AP0–AP10-Stand neu aufgezogen — die Vorphase hat die große Gap-Liste weitgehend geschlossen (EFZG AP4, Wochengeld AP7, Wr. DAG AP3, BSGR/ERGB AP0, Reports AP2, Abwesenheits-WETs AP5, VWGJ AP9, GemBG-Fixes AP10). Verblieben: Pfändung, Sachbezüge, Reisekosten/Pendler, End- abrechnungs-Zyklus (Urlaubsersatzleistung/Vergleich/Aufrechnung), Abfertigung Alt, Karenz-Reste, L17/§ 109a, Schwerarbeitsmeldung, Status-/Verhinderungs-Sonderfälle; Optionen ATZ/Kurzarbeit/ Beteiligung/Entsendung. Plan **freigegeben (Nutzer)** und persistiert: `personalverrechnung/PLAN-Restluecken-AP11.md` — Pakete AP11 Pfändung · AP12 Sachbezüge · AP13 Reise/Pendler · AP14 End- abrechnung · AP15 Abf Alt · AP16 Karenz-Reste (Scope-Gate 8.13) · AP17 Meldewesen-Reste · AP18 Schwerarbeit (Beschaffungsgate) · AP19 Status-Sonderfälle; Σ AP11–AP19 ≈ 90–142 PT; je Paket RIS- Gate vor Bau (Werte nur aus Quelle). **AP8 (AEB) läuft parallel in eigener Session** — Plan führt es nur als Restabgleich; keine Doppelumsetzung, Paket-Starts mit der Parallel-Session abstimmen. **AP 7 Mutterschutz/Wochengeld umgesetzt — 148/148 Tests grün** (2026-09-12): - **Rollenklärung (Plan-Korrektur):** Wochengeld = **KV-Leistung** (§ 162 Abs 1 ASVG, lb-msf-03) — die **ÖGK zahlt**, NICHT der Dienstgeber (die frühere Plan-Annahme „DG-Zahlung nach MSchG“ wäre das deutsche Mutterschaftsgeld-Modell gewesen). DG-Pflichten: Entgelt-Stopp in den Verbotsfristen + Bemessungsdaten (AEB, AP8) + BV auf fiktiver Grundlage. - **Umsetzung:** models/mutterschutz.py — `_at_msch_status()` (Kalendertage/Arbeitstage/Episode aus der AT-Urlaubsart „Mutterschutz-Frist“, WET ATP_MSCH); **volle Wochengeld-Rechnung** `_at_wochengeld()` (§ 162 Abs 3: Ø-Netto 3 Referenzmonate + satzungs-SZ-% 14/17/21 [Parameter at_msch_sz_prozentsatz, ⚠ Satzungsverifikation offen] ÷ Kalendertage); Regel MSCH_ENTGELT (−Tagesatz × Arbeitstage, geteilter Helper _at_efz_tagesatz); **fiktive BV § 7 Abs 4 BMSVG** `_at_bv_fiktiv_wochengeld()` (Monatsentgelt-Ø der 3 Kalender- monate vor Versicherungsfall inkl. anteiliger SZ × KT/30) im _at_bv_basis_laufen-Hook neben der Krankengeld-Fiktion (AP4). - **Verifikationen:** MSchG §§ 3/5 + BMSVG § 7 Abs 4 lokal verifiziert (Quellen .firecrawl/ris/); lb-msf-03 bindend; **lb-krs-08-⚠Marke (EFZG/AngG-Stufen) per ✅-Eintrag in der KB-Dokumentkuratierung erledigt** (EFZG GesNr 10008308 + AngG § 8, Stand 2026-09). - Rechenfälle docs/rechenfaelle/mutterschutz.md; 4 Tests (Entgelt-Stopp + fiktive BV, §-162-Abs-3-Berechnung, Wirkungs- losigkeit, kurzes-DV-Fallback). Version Privat **19.0.9.3.0**. 148/148 (64+110+18) frischer -i-Lauf, py/XML-Sweep. - **Offen:** AP 8 (AEB SART 70/75/76 — Arbeits-/Entgeltbestätigungen Kranken-/Wochengeld; EFZ- und Wochengeld-Berechnung liefern die Daten). Optionen dokumentiert: Sonderwochengeld § 163 ASVG, Ruhen § 166, SZ-%-Satzungsverifikation, Karenz-Referenzmonat § 7 Abs 4 Z 1-3. **AP 4 EFZG/Teilentgelt umgesetzt — 144/144 Tests grün** (2026-09-12): - **Rechtsverifikation:** lb-krs-08-⚠Marke erledigt — EFZG von RIS beschafft (Bundesnormen **GesNr 10008308**, .firecrawl/ris/EFZG_*GeltendeFassung.html) und **§ 2 Abs 1/3/5 verifiziert**; § 8 Abs 1/2/2a AngG lokal verifiziert — **Gleichlauf bestätigt** (6/8/10/12 Wochen bei 0/1/15/25 vollendeten DJ + je 4 Wochen halb). „56 Tage" = AU-Topf 8 Wochen (lb-asc-15), KEINE eigene Regel. **KUG § 62 ASVG = Falsch- Prämisse** (RECHTSQUELLEN-Privat 2026-09-10: § 62 regelt Beitragsabrechnung; deutsches U1-Vorbild) — kein Baustein. - **EFZ-Maschine** `models/efzg.py`: `_at_efz_status()` — Kalendertage-Kontingente je Arbeitsjahr (Eintrittsdatum-Rhythmus), Krank- und AU-Topf getrennt (AU nur voll), Stufe je Tag (Stufensprung verlängert), Phasen je Arbeitstag aus den ATP_KRANK/ATP_AU-Work Entries (neue Urlaubsart Arbeitsunfall); Episode-Beginn für fiktive BV; Info-Feld am Payslip. - **Regeln** TEIL_ENTGELT_HALB (−50 %/AT) + KRANKENTGELT_PHASE (−100 %/AT) als negative Brutto-Zeilen (seq 45/46, Tagesatz = unreduzierte laufende Basis ÷ Arbeitstage — `_at_efz_tagesatz(result_rules)` rechnet die eigenen Reduktionen heraus); SV/LSt/LNK folgen über die reduzierte laufende Basis (lb-krs-07). - **Fiktive BV § 7 Abs 3 BMSVG** in `_at_bv_basis_laufen`-Hook: 50 % Vormonatsentgelt (Episode-Beginn-Monat davor, SZ ausgenommen) × Halb-/ÖGK-Kalendertage/30 — Halbphase zählt mit (Krankengeld ruht zur Hälfte, Quellbeispiel lb-krs-07); fließt in BVG-Zeile und mBGM-BV-Basis. - Parameter `at_efz_stufen` (data/rule_parameters_efzg_private.xml); Rechenfälle docs/rechenfaelle/efzg.md; 6 Tests (Übergang, Kontingent, Stufe 8 Wo, AU-Topf, fiktive BV, Wirkungslos ohne Stand). November-B13-SZ-Bezug in BV-Grundlage inklusive (§ 6 BMSVG) — Tests komponentenweise. - Version: Privat **19.0.9.2.0**. 144/144 (64+106+18) frischer -i-Lauf, py/XML-Sweep. - **Offen:** AP 7 (Wochengeld/Mutterschutz), AP 8 (AEB SART 70/75) — EFZ-WETs sind verdrahtet; dokumentierte Reste: Kalenderjahr- Umstellung § 8 Abs 9 AngG, ÜStd-/Provisionsdurchschnitte, SZ- Kürzung „kann"-Regel. **AP 9 Vordienstzeiten/Einstufung umgesetzt — 138/138 Tests grün** (2026-09-12): - **Rechtsbeschaffung:** Bgld. GemBG 2014 via RIS **LrB GesNr 20001002** (geltende Fassung, Quelle `.firecrawl/ris/bgld/GemBG_2014_GeltendeFassung.html`) — **§ 67 verifiziert**: BDA = Dienstzeit + anrechenbare Vordienstzeiten (Abs 1); Pflicht-Anrechnung EWR-ÖD/EU-Dienste (Abs 2 Z 1 f), Grundwehr/Ausbildung max 6 M, Zivil/Ersatz max 9 M (Z 4), einschlägige Berufstätigkeit/Verwaltungspraktikum **max 10 Jahre** (Abs 3). Rahmen-KV § 17 (SI-2203 Volltext) verifiziert: Abs 4 Anzahl angerechneter VWGJ durch Firmenleitung + Dienstzettel, Abs 5 Vorrückung am **Ersten des Erreichungsmonats**. - **Privat (AP9b):** Stufen-Neu-Feld `vwgj_ab` (aus Labels "nach N VWGJ", 0=ab Beginn, **-1=nicht gepflegt** — ORM liest Integer- NULL als 0, deshalb -1-Konvention + Domain `> -1`); CSV-Seed um vwgj_ab ergänzt (131 Zeilen); Gruppen-Methoden `_get_stufe_fuer_vwgj`/`_get_naechste_vwgj` (kollektivvertrag.py); Vertragsfeld `l10n_at_vordienstzeit_monate` + Compute `l10n_at_vwgj_monate`/`l10n_at_vwgj_stufe_vorschlag`/ `l10n_at_naechste_vorrueckung` (§ 17 Abs 5) + Button `action_einstufung_uebernehmen` (bewusst manueller Verwaltungsakt); KV-Einstufungs-Gruppe im View erweitert. Tests: test_einstufung_private 4 (freeze_time für Determinismus). - **GemBG (AP9a):** `vordienstzeiten_monate` (Help dokumentiert den kompletten §-67-Katalog) + Compute `bda_vorschlag` (= Beginn − Monate) + Button `action_bda_uebernehmen`; View am Besoldungs-Block. Test test_06 (BDA-Übernahme triggert §-66-Abs-2-Vorrückungstermin). - Versionen: Privat **19.0.9.1.0**, GemBG **19.0.1.6.0**. Validierung: 138/138 frischer -i-Lauf, py/XML-Sweep, DB entfernt. - **Offen:** AP 4 (EFZG/Teilentgelt + fiktive BV), AP 7 (Wochengeld/Mutterschutz), AP 8 (AEB SART 70/75). **AP 5 + AP 2a–d + AP 3 + AP 10 umgesetzt — 133/133 Tests grün** (2026-09-12, Folgeturn nach AP0/AP1, Reihenfolge lt. Plan): - **AP5 Abwesenheiten:** hr_holidays + hr_work_entry_holidays als Pflicht-Dependence des Privatmoduls; AT-WETs ATP_URLAUB/ATP_KRANK/ ATP_KARENZ (is_leave) + country-gebundene AT-Urlaubsarten mit WET-Verknüpfung (data/absence_private.xml, Odoo-Lokalisations- muster); Karenz-Wochen erkennbar via Work Entries. - **AP2a–d Reports:** Monatsjournal mit eigenem **Dienstgeberanteile- Block** (ATP_DG-Kategorie, vorher still ausfiltert), neuer Report **Dienstgeber-Gesamtkosten** (je AN Brutto + LNK aufgeschlüsselt/kumuliert + Laufsummen, Spalten FLAF/KommSt/DZ/BV/Wr. DAG), **Jahreslohnkonto je DN** + **Betriebsjahreslohnkonto** (Wizard + Monatsmatrix, models/monatsreports.py + report/jahresreports.xml), **Buchungsbeleg** am Lohnlauf (private, models/buchungsbeleg.py). **Latenz-Bug:** models/monatsreports.py war NIE in models/__init__.py importiert — sämtliche GP7-Reportmodelle waren toter Code! - **AP3 U-Bahn-Steuer:** Wr. DAG via RIS **verifiziert** (LrW GesNr 20000133, Fassung 12.09.2026, Quelle .firecrawl/ris/wien/WDGAG_*.html; 2 €/Woche § 5, Befreiungen § 3, 15./31.3. § 6, Rückerstattung § 7 218,02/2.180,19 €) — Implementierung: Company-Flag l10n_at_wien_dag (Kern), Regel WIEN_DAG (models/wien_dag.py — Wochenlogik Montag-im- Monat + Befreiungen Lehrling/55+/≤10WStd/Karenz-Woche), Fristenarten wien_dag/wien_dag_jahres (cron-geflaggt), FI 6663 (3560 Referenz- rest), DG-Kosten-Spalte. **Wochenlektüre „Montag beginnt im Monat" = Praxis-Annahme, Parallellauf verifizieren.** - **AP10 GemBG-Fixpaket:** Modul erstmals **installierbar** — 9 Latenzfehler behoben: regular_pay, is_paid+round_days* auf WETs, falscher XML-ID-Präfix (payroll_structure_bgld.), amount_select 'python'→'code', safe_eval-Import, rules→result_rules (Odoo 19 befült rules NIE), categories['X'], work_time_rate-÷100 (Bruchteil 0..1), nie gelaufene Tests (Payslip-name, Stichtag vor Katalog- gültigkeit, date_start ist Compute aus contract_date_start). - Versionen: Kern **19.0.6.0.0**, Privat **19.0.9.0.0**, GemBG **19.0.1.5.0**. Validierung: 133/133 (17 GemBG + 64 Kern + 92 Privat), frischer -i-Lauf aller 3 Module, py/XML-Sweep, DB entfernt. - **Offen:** AP 9 (Vordienstzeiten — jetzt entblockt), AP 4 (EFZG/ Teilentgelt), AP 7 (Wochengeld/Mutterschutz), AP 8 (AEB SART 70/75). **AP0 TASY-Katalog (Variante b) + AP1 AGRD umgesetzt und grün (109/109 Tests)** (2026-09-12, Nutzer-Freigabe des AP-Plans mit Scope-Entscheidungen): — Kernmodul: neue Katalogmodelle `models/tasy_katalog.py` (10 Modelle: tasy.bsgr/ergaenzung/ dienstgebergruppe/tarifgruppe/tarifset/tarif/tarifset.zuord/ zuabschlag/zuabschlag.steuerung [+ m2m]), Import-Wizard `l10n.at.payroll.tasy.katalog.wizard` in `models/tasy.py` (sektionsscharf — root.iter() fasste auch Referenz-Elemente!), Sicherheit, Views/Menus `views/tasy_katalog_views.xml`; Auflösungs-API `_l10n_at_find(bsgr, ergs, dgg, stichtag)` → `_l10n_at_saetze(basis, stichtag)`. Privatmodul: mBGM liest Katalog vor `at_mbgm_tarif` (quellen-Fallback), Company-Feld `l10n_at_dienstgebergruppe` (Default NBALG), Vertrags-m2m `l10n_at_ergaenzung_ids`, **ERGB wird real belegt** (15 Stellen im T1), NSchAB-Flag nur noch Parameter-Fallback. **BSGR-Korrektur:** Lehrlinge arbeiter→**B045**, angestellte→**B044** (TASY: B044 = „Angestelltenlehrlinge"), geringf./fallweise→**B010/B030** je Personalgruppe; **NSchAB-Feldumbenennung** Schlechtwetter→Nachtschwer- arbeit (3,80 % = NB-Zweig DG ab 2020, verifiziert; SW-Zweig = 0,7/0,7). **AP1** — `l10n_at_agrd` Char→Selection mit vollständiger D.22-Liste (33 Codes, lokal verifiziert), Seed `data/hr_departure_reason_seed.xml` (noupdate; hr-Defaults fired→01/resigned→02/retired→16 vorverbunden + 7 AT-Ursachen), View-Erbe auf Abgangsursachen-Form/Liste. Nutzer-Entscheidungen: hr_holidays als **Pflicht-Dependence**; Wochengeld **volle Berechnung**; TASY-Import **alle Träger**; AGRD Migration OK; Buchungsbeleg **Lohnlauf-Ebene**; GemBG-Fix-Paket **ja**. Validierung: 109/109 grün auf Wegwerf-DB (frischer -i-Lauf; test_tasy_katalog 5 inkl. Realexport — Fund: altersgrenzeMinJahr ist **Dezimal** (60.5) → Float-Felder), py/XML-Sweep ok, DB entfernt. **Nächste APs:** AP 5 (holidays/WETs), AP 2a-d (Reports), AP 3 (U-Bahn nach RIS-Klärung), AP 4/7/8 (EFZG/Wochengeld/AEB), AP 10/9 (GemBG-Fix → Vordienstzeiten). **GP9 UI/Security/Doku umgesetzt — GP1–GP9 komplett, AP9 abgeschlossen, Projekt M8 final** (2026-09-12): Kern 19.0.5.1.0 — Company-Stammdaten-UI (BKNR/LStNr/Bundesland/WKO/WF-Wien — Reiter am Company-Formular, vorher nur Entwicklermodus!), Multi-Company- Record-Rules (ir.rule für L16/Kind/Frist). Privat 19.0.8.1.0 — Mitarbeiter-UI (All-in § 2g + NSchAB), Multi-Company-Rules (mBGM/VR), Demo-Datensatz (3 AN, noupdate, Demo-Modus), Benutzerhandbuch (deutsch, Quick-Start). 100/100 grün; odoo_dev auf GP9. **General-AT Projekt GP1–GP9 abgeschlossen (M8 final).** Optionen: AP10 (Testing/Parallellauf) als Folgeauftrag. **GP8 Jahreswechsel/Fristen/Retro umgesetzt und grün (100/100 Tests) — General-AT GP1–GP8 komplett; optional GP9 (AP9: UI/Security/Doku/Schulung) als Folgeauftrag** (2026-09-12): Kern 19.0.5.0.0 — Fristenkalender (`models/fristenkalender.py`: `l10n.at.payroll.frist` mit ir.cron-Auto-Erzeugung monatlich + jährlich; Fristarten SV 15./DB-DZ-KommSt 15./L16-Ende-Februar/ Arbeitsstätte/§-109a/KommSt-Jahreserklärung-Ende-März/Schwerarbeit; Überfällig-Färbung; Sprungaktion zur GP7-Deklaration), Jahres-Retro (`models/jahresretro.py`: Kontrollsechstel § 67 Abs 10 — Günstig- Vergleich Fixsätze vs. Tarif je AN; §-77-Abs-3/4-Option; Handlungs- empfehlung Odoo-Korrektur-Pipeline), Mitteilungsfile-Import (`models/mitteilungsfile.py`: ELDA-Rückantwort-XML-Parser, Fehler/Warnungen lesbar aufbereiten), 2027-Parameter-Rahmen (`data/rule_parameters_2027.xml`: nur Struktur — WF-Vektor-Default + AV-Staffel tiers=[], KEINE Trainingswerte; Wartungszyklus beschafft die offiziellen Werte). Privat 19.0.8.0.0 — Vertragsstichtage-UI (`views/vertragsfelder_views.xml`: GP4-Stichtage + Status-Flags), All-in-Deckungsrechnung + DAG-Ausweis (`report/gp8_reports.xml`), Frist-mBGM-Verlinkung (`models/fristen_private.py`: ref_mbgm_id nur im Privatmodul — Kern kennt mBGM nicht). B14-Verifikation: aktuelle Implementierung praktisch korrekt (erster Urlaubsmonat, _at_sz_bereits_bezahlt gegen Doppelauszahlung — „längster Teil" nur Randfall bei mehrmonatig gesplitteten Urlauben, dokumentiert ohne Code-Fix). Tests 100/100 (test_gp8 6), Wegwerf-DB frisch; `odoo_dev` auf GP8 aktualisiert. **GP1–GP8 komplett — M8 erreicht.** **GP7 Meldewesen/Belege umgesetzt und grün (94/94 Tests)** (2026-09-12): Kern 19.0.4.0.0 — ELDA-Fixsatz-Framework (`models/elda.py`: Fixlängen, a/n blank/n null, Cent kaufmännisch, Prozente ×1000, ISO-8859-15, Dateiheader, Vorlauf SART 00/Schluss SART 99, SANR ab 1 lückenlos, SANZ inkl. Rahmen; **CRLF-Satztrenner = Praxis-Annahme, DM-ORG normiert keines — Parallellauf verifizieren**); L16 (`models/ lohnzettel_l16.py`: I1 1.100 + L1 **3.500**, Lohnzettelversion 28, BEST LF/VSTR 94, ~210 Felder, Kinderblock 15×123 ab Pos. 1501; **KZ 210 = § 25 GESAMTBrutto** — KZ-245-Formel = laufende Steuer- bemessung, per Konstruktion GP3-konsistent, Ableitung aus Kern-Flags ohne paralleles KZ-Feld) + Arbeitsstättenmeldung § 34 Abs 6 (SART 45, BEST AD/VSTR ST, je AN am 31. 12., GKZ manuell am Dienstort-Partner); Kind-Modell `l10n.at.payroll.kind` (FB+-Wartung; Nutzer: **FB+ rechnet NICHT im Lohnsteuerkern** — Steuer < 0 → ANV); Stammdaten (BKNR/Lohnsteuernummer Company, GKZ Partner, VSNR-Formatprüfung hr.version.ssnid — Prüfziffer Rest, eSV-AGRD-Mapping hr.departure.reason); Belege: Lohnzettel AT + Monatsdienstliste + Monatsjournal (QWeb auf hr.payslip.run; account.report in keinem HR-Modul). Privat 19.0.7.0.0 — mBGM/JASV (`models/mbgm.py`: PS/G1/ T1/BS/V1, T01/T02-Gesamtsatz aus `at_mbgm_tarif` **normativ laufend 39,05 %/SZ 37,55 %**; Abschläge **je Basis AB und SZ**: A03/A02/A01 §-2a-DN-AV, A09 UV-60, A10 AV+IE, A15 PV; BV-Basis GP5 + V01; RSUM=Basis×Satz mit GP4-Konsistenzcheck ±0,10 €; Storno R1 REFU, Fehlanzeige Null-Paket; geringfügig/fallweise OHNE Parametrisierung → Abbruch, keine Tariferfindung) + Versichertenmeldung (`models/ versichertenmeldung.py`: M3/M4 deklarative Event-Erkennung über Registry `l10n.at.payroll.vr.event` — idempotent, KEIN write-diff; BBER 01–04, GERF Gehalt-vs-GFG, BVAB/BVJN aus GP5, VWAZ h×100, AGRD; fallweise BEST MA/SART 32 MVP je Anmeldetag; NSchAB-Company-Flag +3,80 B001). Tests 94/94 (test_elda_l16 4 + test_meldewesen_private 2), Wegwerf-DB frisch; Rechenfälle `docs/rechenfaelle/meldewesen.md`. Out: Schwerarbeit (DM-ORG E.22-Struktur vorhanden, keine ASchV- Basis), § 109a, L17, Mitteilungsfile-Import (5.2→GP8), FB+-LSt (ANV), geringfügig-mBGM bis Param. Offen: odoo_dev-Update (GP4- Stand!), Referenzbuchhaltungs-Endfixierung, Parallellauf-Verifikation CRLF/Kanäle. **GP6 FI-Buchung UGB umgesetzt und grün (88/88 Tests)** (2026-09-12): privat 19.0.6.0.0 — Buchungsmatrix nach **KFS/BW 6** (Nutzer- Referenz-Exemplar `.additional_docs/KFSBW6_13072017_RF.pdf`, extrah. `/tmp/kfsbw6/` ad hoc): Hook `_configure_payroll_account_at` (`models/account_chart_private.py`; BE-Muster; Chart-Load-Pfad `_post_load_data` + ``-Datendatei für Bestands-Companies — der ERSTE `` einer function ist die Record-ID-Liste, convert.py!) ordnet Regelkonten (Matrix als Python-Dict), Journal SLR (Default 6200, BE-Muster — Odoo-Constraint verbietet Receivable/Payable als Journal-Default!) und NET-Konto **3850** (Nutzer 5.1; Anlage+reconcile, l10n_at-Chart hat es nicht). **EKR-Debit-Split:** `l10n_at_personalgruppe` am Vertrag + `l10n_at_account_debit_arbeiter` je Regel, Option A minimal (Nutzer 5.2: 6000/6500/6600/6601/6602; Rest Fallback auf Angestellten- Konten bis Referenzbuchhaltungs-Fixierung); `_prepare_slip_lines`- Gesamtüberschreibung `models/account_posting_private.py` (Odoo hat keinen Override-Punkt; Upstream-Kopie Odoo-Pin mit 1 Substitution, testgepinnt). Nutzer-Vertauschung aufgeklärt: „6000 Gehälter/6200 Löhne“ → KFS/BW 6 sagt 600–619 Löhne, 620–639 Gehälten. **NET- Umbenennung NETTO→NET** (Odoo filtert code 'NET' für Payment/ net_wage/Negativ-Netto) + **Odoo-19-Fund:** Structure-Anlegen kopiert die default_structure-Regeln (BASIC/GROSS/NET/…) via Feld-Default in rule_ids — kopierte NET-Regel kollidiert im result_rules-Dict (Netto=0); Fix: `` archiviert die Kopie (active=False; KEIN Unlink — struct_id NOT NULL + historische Linien behalten Regel-Ref; One2many blendet Archivierte aus). Konto-Suche exakt vor Präfix-Fallback (Präfix max. +1 Stelle) — sonst matcht '6000%' Odoo-Scaffold 600000 „Expenses“ chartloser Firmen! BVG 6440 (EKR 644) vor 6400 (Odoo-Chart), Credit 3600 (Nutzer 5.3); depends + l10n_at + hr_payroll_account_iso20022. Tests `test_account_private` (4, Kontenplan-Mock ohne Chart-Install; NET-Rundungscents = Odoo-„Adjustment Entry“ auf Journal-Default, delta=0.02) + NETTO→NET in 4 Suiten — **88/88 grün** (frischer `-i`-Lauf, Wegwerf-DB, aufgeräumt). Offen: Arbeiter-Sub-Konten-End- codes mit Referenzbuchhaltung (GP0-Rest), Payment-/SEPA-Registrierung nur strukturell getestet, `odoo_dev` Update nachholen (läuft auf GP4-Stand). **GP5 Abfertigung Neu (BMSVG) umgesetzt und grün (84/84 Tests)** (2026-09-11): Kern 19.0.3.1.0 (`at_sv_bv_dg` 1,53 % in `rule_parameters_sv_2026.xml`); privat 19.0.5.0.0 — Regel `BVG` (ATP_DG, ohne Nettoeffekt) auf **EIGENER ungecappter BV-Grundlage** (§ 6 Abs 5 iVm § 49 ASVG: kein HBG-/ Jahresdeckel; ohne §-67-Abs-3/6-Zeilen, § 49 Abs 3 Z 7 ASVG — bewusst KEIN Rückgriff auf die SV-SZ-Basis des Kerns, deren Z-7-Ausschluss fehlt = GP4-Beobachtung, offen dokumentiert; Nutzer-Entscheidung „eigene BV-Grundlage"). `models/abfertigung_private.py`: beitragsfreier erster Monat **taggenau** — Fenster [Eintritt, Eintritt+1M), Pflicht ab Monatsjubiläum (15. 06. → 15. 07.; Nutzer-Lesart „ab Folgetag 16. 04." = Off-by-one, verworfen gegen KB-Beispiel lb-vor-03: 4.500/30 × 17 = 2.550), 30-Tage-Aliquotierung via Lohnsteuertage (Teilmonat-Doppelabzug-Schutz), Monatsende-Klippe (31. 01. → frei bis Ultimo, Pflicht ab Folgemonatserstem), AV ≤ 1 Monat gänzlich frei; **Wiederzulassung binnen 12 Monaten ab Tag 1** — Vor-AV beliebiger Dauer (auch < 1 Monat), schlägt auch die Kurz-AV-Freiheit (Nutzer-Klarstellung 2026-09-11; OGH 9 ObA 30/16a; Suche über frühere `hr.version` mit contract_date_end); SZ ohne Fenster-Kürzung, frei nur bei Beitragsmonat im Fenster (**voller Datumstag** — Monats- anfangs-Kürzung wäre für Fälligkeit 20. 07. bei Fensterende 15. 07. falsch); läuft auch für Geringfügige + Lehrlinge (§ 46, § 1 Abs 2 Z 1). Anwartschaft (§ 15: Beiträge + Erträge, KEINE Staffel) on-the-fly aus validierten BVG-Linien (`_at_bv_anwartschaft`, je Beitragsmonat/Jahr); Anwartschaftsreport QWeb auf `hr.employee` (AbstractModel `bv_report.py`) + Endabrechnungs-Wizard `l10n.at.bv.endabrechnung.wizard` (§§ 14-17: §-14-Abs-2-Matrix, < 36 Beitragsmonate IMMER-Sperre, §-16-Fälligkeit Ende des zweitfolgenden Monats, 6-Monats-Erklärungsfrist, 5 Optionen; Auszahlung durch die MV-Kasse, kein Payslip). Stammdaten: `l10n_at_abfertigung_neu` + `l10n.at.bv.kasse` (Leitzahl eSV/mBGM, 7er-Namen-Seed noupdate, lb-gsv-11 — Leitzahlen aus Mandats-Unter- lagen, nie geraten) + `l10n_at_bv_ertraege`/`l10n_at_bv_monate_ extern` am Mitarbeiter (Kassen-Auszug). Bewusst nicht: §-7-Fiktiv- fälle (Präsenzdienst/Kranken-/Wochengeld — dokumentierte Option, Entgeltersatzleistungen fehlen im Modul), Geringfügigen-Jahres- zahlung + 2,5 % (GP7), BV-Provider (Option). Tests: `test_bv_private` (10) neu — **84/84 grün** auf Wegwerf-DB `gp5_test` (frischer `-i`-Lauf; QWeb-Rendering selbst nur py/XML-validiert, kein Render-Test); Rechenfälle `docs/rechenfaelle/abfertigung.md`. Offen: GP6-BVG-FI-Konto, GP7 mBGM (Leitzahl, DG-Kontonummer, Jahres- zahlung), GP8 Fristenkalender; SV-SZ-Z-7-Folgefix im Kern (GP4-Beobachtung) separat entscheiden. **GP4 SV/DB umgesetzt und grün (74/74 Tests)** (2026-09-11): Kern 19.0.3.0.0 (`models/sozialversicherung.py`: DG-Beiträge 20,98 %/Wien 21,23, §-54-SZ 20,48 %, Geringfügigkeit § 5/§ 810-3 mit Hochrechnung + §-53a-UV 6,50 €, §-49-Abs-3-Jahreskumulative, Altersstichtage als Datumsfelder am Vertrag, ALV-DN-Staffel § 2a DN-seitig, WF-Vektor, Beitragsmonats-Allokation mit 2025-HBG 6.450, DAG § 1 DAG) + `rule_parameters_sv_2026.xml`; privat 19.0.4.0.0 (SVDN_SZ-Nachtrag § 67 Abs 12, DG-Block ATP_DG, FLAFDB/KOMMST/DZ flag-gated, LNK-Basis § 41/§ 5 mit Freibetragsstaffel 1.095/1.460). **P0-Rechtsfund GP4:** GFG 2026 = 551,10 € — Aufwertung per **§ 810 Abs 3 ASVG ausgesetzt** (A7-Rest gelöst; RIS-Anmerkungsreihe hat deshalb keinen 2026- Eintrag); DAG-Grenze 826,65 = 1,5×GFG (TASY MINGRDAGP1, § 1 DAG als Normzitat per ÖGK-Tarifsystem — lb-sva-12-⚠ erledigt); §-19a- Selbstversicherung 2026 = 83,49 € (TASY KVPVBTG19A; Zahlung DIREKT an den Träger — kein Lohnabzug, SV-Werte Fn. 9); aBG 591,29 abgeleitet → UV 6,50 €/Monat ⚠. **Rechtskorrektur § 2a AMPFG:** Staffel ist DN-seitig (ÖGK „Mind. AV auf 0/1/2 %" = −2,95/−1,95/ −0,95) und gilt auch für SZ — DN-SV bei 2.059,41 € BG = 15,12 % statt 18,07 % → GP3-Rechenfälle RF-L1/L3/L5 + betroffene Tests nachgezogen („862,25“ des Nutzers war Zifferndreher; 1,5×551,10 = 826,65). Offen aus GP4: UI der Vertrags-/Company-Felder (GP8), DAG-Ausweis/Veranlagung + UV-Pauschalen-Direktbeleg (GP8), DZ- WKO-Satzverifikation (8.11) vor Wien-Mandanten, IESG-auf-SZ-§-5- AMPFG-Volltext, mBGM-Nachtragslogik (GP7). Vor GP5: DZ-8.11- Entscheidung gilt als erledigt (flag-gated umgesetzt); Formel-7 (A3) bleibt Change-Request-Optimierung. **3. RIS-Runde integriert** (11.09.2026, `.additional_docs/ris_normtexte/`) — A-Punkte gegen die Tagesfassung textverifiziert; Integration in RQ/PLAN/RUNBOOK/KB- KONFLIKTE + 5 Layer-2-Abgleichnotizen. **A1-Korrektur:** §-124b-ÜStd-Maßnahme 2026 = **Z 440 lit c idF BGBl I 4/2026** (15 ÜStd/ 170 € durchgehend 2026, Aufrollung 31.05.2026); „Z 476 lit c idgF BGBl I 43/2026“ = Fehlzitat (Z 476 = Pendlerpauschale); Z 492/494 = § 68 Abs 1-Feiertagsarbeitsentgelt (30.09.2026 = Z 494 idF 43/2026); lb-zus-07/wk-akt-01 rehabilitiert. **A4-Zitierstruktur:** ATZ = Art. 2 § 27 AlVG, Quotenstaffel = Art. 7 § 82 Abs 7/8 (788–884 Wochen); „§ 27 nicht in Kraft“ = Artikel-Abrufartefakt. **A6 ✅:** ALV-Entfall ab 2027 = AlVG § 1 Abs 2 lit e idF BGBl I 62/2026 (NOR40280219; inkl. Korridorpension/erfüllter Anwartschaft, Folgemonat; DN+DG+IESG entfallen; AMPFG § 2a aus 31.12.2026); § 49 ASVG 2027 nur Telearbeitspauschale. **A7-Fundstellen ✅** (GFG = ASVG § 5 Abs 2, AK-Umlage = AKG § 61, § 53a NOR40245133) — ⚠ **Rest neu: 2026-GFG offen** (551,10 € = 2025-Wert; Pauschale ≈ 77,80 €/DAG-Schwelle 826,65 € erst nach Fixierung parametrisieren). **A9 ✅:** AZR 2025: 1.273,99 / 2026: 1.308,39 (§ 293 ASVG Anm. 2); Höchstberechnungsgrundlage 5.080/5.220. **A10 ✅:** APG § 1 Abs 3 — Altrechtsgrenze 1.1.1955 („1954“ nur LZP- Kohorte). **A3 unverändert ⚠** (Normtexte § 16 Abs 1 Z 4 lit f + § 20 Abs 2 Z 1 ✅; Praxis nicht dokumentierbar) — bleibt einziger AP4-Blocker. B16-Bezugszeitraum ✅ (Z 492/494). **GP2 Entgelt-Engine umgesetzt und grün (29/29) — GP3 Lohnsteuer (Kern-Bau AP3, D3) ist der nächste Bauabschnitt** (2026-09-11): GP2 nach Nutzer-Freigabe komplett: Structure „AT Privatwirtschaft (KV)" + ATP_*-Kategorien, 10 AZG-Fenster-WETs, Regeln KVGEO/NACHT_SV/UE_*/MEHR_*/URL_UE/PRAM/B13/B14/B14_RUECK/ NETTO, All-in-Felder + Deckungsrechnung; Kern-Parameter at_statutory_naz_weekly (40) + at_mehrarbeit_teilzeit_zuschlag (25). User-Konventionen: Prorate Arbeitstage (resource_calendar), B13/B14-Aliquotierung kalendertage (KT/365), B14-Fallback Juni, Teilzeit-Mehrarbeit KV vor Gesetz. Validierung: `test_entgelt_private` (21 Fixtures aus docs/rechenfaelle/) + `test_kv_katalog` → **29/29 grün** auf odoo_dev. D4-Funde: hr.work.entry tageweise (date+ duration), date_start computed aus date_version, work_time_rate = Bruchteil — **zwei weitere GemBG-Latenzfehler** (work_time_rate ÷ 100; categories.Attributzugriff) neben regular_pay → Bgld-Track. Vor GP3/GP4 weiter offen: DZ 8.11 + 8.12-Restagenda (A3 = AP4- Blocker; B3/B14/B18); Pilotmandant arbeitet der Nutzer. Kernwerte: SBV-Kleinwohnung § 2 Abs 7a (35/45 m², 35 % Abschlag); GF-Schwelle > 25 % (ASVG vs. GSVG-Zuständigkeit); IESG-HBG-Relationen 2026 (1× 6.930 · 1,5× 10.395 · 2× 13.860); EFZG 56 Tage ab 2. DJ; § 68 Abs 1 Feiertagsarbeitsentgelt im 400-€-Korridor ab LZP 2026. KB-KONFLIKTE B (A-Runden-Format), RUNBOOK + MEMORY nachgezogen; Layer-2 unberührt (Beleg-Prinzip) → `--registry`/`--check` unverändert gültig. (2026-09-11, A-Runde + 2. Verifikationsrunde): A1/A2/A5/A7/A8/A9 ✅ gelöst, A10 ⚓ (Bonus ✅, Altrecht-Mikrorest), A6 ⚓ (BgBG verkündet; Rest: ALV-Entfall-Wortlaut § 49 idF 2027), A4 ⚓ (Normbasis ✅; Rest: All-In), A3 ⚠ weiterhin AP4-Blocker; Nutzer-Primärquellen in `.additional_docs/` (ÖGK- Beitragstarifsystem oegk/, AMS-Merkblatt, LStR 2002 Abschn. 19.3, ASVG-§-108/BSVG-§-23/EO-§§-291a+292/§-617-Briefings) + `quellen/ TASY-LSWH-Export-20260324.xml`; verifiziert mit 5 parallelen Quell-Agenten. RQ-Korrekturen: AK-Umlage 0,5 % **DN** (bisher „nur DG" falsch), WF-Wien 1,5 % gesamt (0,75/0,75) ab 1.1.2026, § 67 Abs 3 Abfertigung Alt = Günstiger-Prinzip (Vervielfachung vs. 6 %) + SV-frei § 49 Abs 3 Z 7 ASVG; `LOESUNG-KONFLIKTE.md` integriert und gelöscht (Nutzer-Freigabe); Layer-2-Einträge unberührt (Beleg-Prinzip) → `--registry`/`--check` unverändert gültig. Protokollnotiz: WF-Wien-Zuschlag (+0,25/0,25) fehlt als rule parameter (GP2–GP4-Designinput). (2026-09-11, früher): Odoo-Umgebung lokal aufgesetzt (PostgreSQL 18.6, Python-3.14-venv `.venv/`, gemergter Baum `odoo_19.0+e.20260910/…` editable installiert; Dev-DB `odoo_dev`). GP1-Gate genommen: `l10n_at_hr_payroll_private` installiert, `test_kv_katalog` 8 Tests, 0 Fehler. Alte Checkouts `odoo/` + `odoo_enterprise/` entfernt (~21 GB), Doku auf den neuen Quellen-Pfad umgestellt. Befund aus der Core/GemBG-Runtime-Validierung: `l10n_at_gemeinde_payroll` failt beim Install (`regular_pay` existiert nicht auf `hr.payroll.structure` — latenter Bug, Bgld-Track, offen). Nutzer-seitig offen wie zuvor: Pilotmandant, D3, UGB- Referenzbuchhaltung, ELDA-/FinOnl-Anmeldungen, Bgld-AP0-Abstimmung. Nächste Gates: **GP2-Baubeginn** (General-AT); vor GP3/GP4: DZ-Entscheidung 8.11 + 8.12-**Restagenda** (A3 „Formel 7“; A4-All-In; A6-§-49-2027-Wortlaut; A10-Altrecht APG-seitig; B-Reste B3/B14/ B17-Inhalt/B18; Kleinverifikationen s. KB-KONFLIKTE „Nächste Schritte“). ## Completed - **GP9 UI/Security/Doku umgesetzt (AP9 final, GP1–GP9 komplett)** (2026-09-12): Kern 19.0.5.1.0 (Company-UI + Record-Rules), privat 19.0.8.1.0 (Mitarbeiter-UI, NSchAB-View, Record-Rules, Demo, Handbuch). 100/100 grün; odoo_dev auf GP9. **M8 final.** - **GP8 Fristenkalender/Jahres-Retro/Mitteilungsfile umgesetzt (100/100 grün)** (2026-09-12): Kern 19.0.5.0.0 + privat 19.0.8.0.0; `odoo_dev` auf GP8 aktualisiert. Fristenkalender mit Cron-Auto-Erzeugung + Sprungaktion; Kontrollsechstel-Wizard; Mitteilungsfile-Parser; Vertragsstichtage-UI; All-in + DAG Reports. B14 verifiziert. **GP1–GP8 komplett (M8 erreicht).** - **GP7 Meldewesen/Belege umgesetzt (94/94 grün)** (2026-09-12): Kern 19.0.4.0.0: `models/elda.py` (Fixsatz-Framework), `lohnzettel_l16.py` (L16 I1/L1 + Arbeitsstätte SART 45; `l10n.at.payroll.l16` + `.line`), `kind.py` (`l10n.at.payroll.kind`), `meldewesen.py` (BKNR/Lohnsteuernummer/GKZ/VSNR-Prüfung/AGRD), `monatsreports.py` + `report/belege_reports.xml` (3 Belege), `views/meldewesen_views.xml`. Privat 19.0.7.0.0: `mbgm.py` (`l10n.at.payroll.mbgm[.line]`), `versichertenmeldung.py` (`l10n.at.payroll.vr` + `.event`-Registry), `data/rule_parameters_mbgm_private.xml` (at_mbgm_tarif B001/B002 39,05/37,55 ab 2026), `views/meldewesen_views.xml`, NSchAB-Flag. DM-ORG-42.7.0-Satzstrukturen PDF-verifiziert extrahiert (mBGM E.32, L16 E.13/E.14 mit vollständiger L1-Tabelle inkl. Kinderblock- Offsets, VR E.29 mit Pflichtmatrix/AGRD/BBER, Arbeitsstätte E.20, fallweise E.18; TXT-Fehler vs. PDF dokumentiert — PDF gewinnt). Rechenfälle `docs/rechenfaelle/meldewesen.md`; README/CHANGELOG/ PLAN-10/MEMORY nachgezogen. - **GP6 FI-Buchung UGB umgesetzt (88/88 grün)** (2026-09-12): `l10n_at_hr_payroll_private` 19.0.6.0.0 — Buchungsmatrix KFS/BW 6: `models/account_chart_private.py` (Matrix-Dict + Hook `_configure_payroll_account_at`: exakte Konto-Suche mit Längen-gebundenem Präfix-Fallback gegen Odoo-Scaffold-Konten 600000 „Expenses“; NET-Konto 3850 Anlage+reconcile; Journal SLR Default 6200 — Odoo-Constraint gegen Receivable/Payable als Journal-Default) + `data/hr_payroll_account_private.xml` (``-Trigger; erster value = Record-IDs) + `models/account_posting_private.py` (`_prepare_slip_lines`- Upstream-Kopie mit Arbeiter-Debit-Substitution) + `l10n_at_personalgruppe` (hr.version) / `l10n_at_account_debit_arbeiter` (hr.salary.rule). NETTO→NET (`action_register_payment`/net_wage/Negativ-Netto filtern code 'NET') + ``-Archivierung der automatisch kopierten default_structure-NET-Regel (Kollision im result_rules-Dict; active=False statt Unlink — struct_id NOT NULL, historische Linien). Tests `test_account_private` (4: Matrix+Move-Balance, Arbeiter-Split 6000/6500/660x, Gering- führig, Fallback/Warnung) auf Kontenplan-Mock ohne Chart- Install; NET-Rundungscents toleriert (Odoo bucht „Adjustment Entry“ aufs Journal-Default). **88/88 grün** (frischer `-i`- Lauf, Wegwerf-DB aufgeräumt); README/CHANGELOG/PLAN-10/MEMORY nachgezogen; Rechenfälle `docs/rechenfaelle/buchhaltung.md`. KFS/BW-6-Extraktion via opendataloader-pdf (Skill-Disziplin; Output /tmp, unversioniert). - **Zed-Threads Auto-Sync Workstation↔Laptop installiert** (2026-09-12): beide DBs jetzt 831/831 identisch; systemd-User-Timer `zed-threads-sync.timer` (10 min) + `~/.local/bin/zed-threads-sync.sh` via ssh-Alias `framework` (Seed-Push 117 WS-Threads, danach idempotente Delta-Zyklen, End-to-End- Test inkl. Timer-Pfad grün). Details siehe Entscheidung „Zed-Threads maschinenlokal“. - **Zed-Threads-DBs Workstation↔Laptop konsolidiert** (2026-09-12): 714 Laptop-Threads in die WS-`threads.db` gemerged (117→831, 0 ID-Kollisionen, Integrity ok; Laptop-Remote-Sessions schreiben clientseitig, WS-Zed war geschlossen; Backup `/tmp/threads.db.workstation-backup`). Verfahren + Finale-Sync siehe Entscheidung „Zed-Threads maschinenlokal“. - **Skill `opendataloader-pdf` erstellt und in den Agent-Workflow integriert** (2026-09-12): Neues Skill `.agents/skills/opendataloader-pdf/` (SKILL.md + vendored `scripts/verify-json.py`, `scripts/hybrid-health.sh` aus dem Upstream-Repo, Apache-2.0) für PDF-Extraktion mit OpenDataLoader PDF; `AGENTS.md` Skill-Selection ergänzt, `wissensbasis/SKILL.md` cross-ref (ODL für schwierige PDFs + Spot-checks, Batch-Intake bleibt bei `build_lexis_kb.py`). ODL 2.5.8 installiert im User-Venv `~/.local/lib/python` (NICHT im Odoo-`.venv`), Java 26 ✓; Smoke-Test auf `.lexis360/`-PDFs: Markdown/JSON sauber (Lesart, Listen, Fußnoten), `--to-stdout` nur mit `-q` sauber; verify-json.py bestätigt Textextraktion. Skill-Disziplinen: Optionen aus installiertem `--help`, Batch in EINEM Aufruf (JVM-Spawn), Verifikation (Exit 0 ≠ Erfolg: Auto-Triage überspringt Enrichment, Hybrid-Server-Health check, Empty-Pipe), Extrakt = untrusted, nie lizenzierte Volltexte committen. - **GP5 Abfertigung Neu (BMSVG) umgesetzt (84/84 grün)** (2026-09-11): `l10n_at_hr_payroll` 19.0.3.1.0 — Parameter `at_sv_bv_dg` (1,53 %, ab 2003-01-01) in `rule_parameters_sv_2026.xml`. `l10n_at_hr_payroll_private` 19.0.5.0.0: Regel `BVG` (`salary_rules_bvg_private.xml`, ATP_DG seq 95, 1-Zeilen-Bindung) auf `models/abfertigung_private.py` — eigene, ungecappte BV-Grundlage (§ 6 Abs 5 iVm § 49 ASVG; §-67-Abs-3/6-Zeilen aus- geschlossen, § 49 Abs 3 Z 7 ASVG); Fenstermechanik taggenau (Monatsjubiläum, 30-Tage-Aliquotierung über Lohnsteuertage, Monatsende-Klippe via relativedelta+1 Tag, Kurz-AV < Jubiläum); Wiederzulassung: hr.version-Suche contract_date_end ∈ [Start−12M, Start) → Pflicht ab Tag 1 (Vor-AV beliebiger Dauer — Nutzer- Klarstellung, schlägt auch Kurz-AV); SZ-Fensterfreiheit über vollen Beitragsmonats-Datum der Regel (kein .replace(day=1)!); Gering- führende + Lehrlinge erfasst (kein Geringfügig-Lehrling-Switch). Anwartschaft `_at_bv_anwartschaft` (BVG-Linien validierter Läufe, je Beitragsmonat/Jahr, Refund-nettend); `l10n.at.bv.kasse` (name, leitzahl; 7er-Seed noupdate — Allianz/APK/BONUS/BUAK/NÖ/Valida Plus/VBV, lb-gsv-11) + `l10n_at_bv_endabrechnung.wizard` (§-14- Matrix + 36-IMMER-Sperre + §-16/§-17-Fristen + 5-Optionen-Info; report_action auf Anwartschaftsreport) + QWeb-Report auf hr.employee (`report/bv_report.xml` + AbstractModel `bv_report.py`; binding hr.model_hr_employee). Views: Kasse list/form, Employee- Form-Gruppe „Abfertigung Neu (BMSVG)" in payroll_group, Wizard, Menüs seq 50/60. Security: Kasse user/manager + Wizard. Tests `test_bv_private` (10: RF-BV1..10) + Rechenfälle `docs/rechenfaelle/abfertigung.md` — **84/84 grün** auf Wegwerf- DB `gp5_test` (frischer `-i`-Lauf); README/CHANGELOG/PLAN-10/ MEMORY nachgezogen. D4-Fund: hr.version.write setzt bei Einzelversion `date_version` automatisch auf contract_date_start mit; _get_version(date) = max(date_version ≤ date), Fallback versions[0] — Fixture-Mechanik für Mehrversionen-Tests. - **GP3 Lohnsteuer komplett im Kern umgesetzt (52/52 grün)** (2026-09-11): `l10n_at_hr_payroll` 19.0.2.0.0 — `models/lohnsteuer.py` (§ 33-Zonentarif; § 66 kumulativ mit Rollung: Lohnsteuertage 30/Monat [user], Teilmonat § 66 Abs 3, JBG = Bemessung × Faktor − 132/60-Pauschalen, Absetzbeträge 496/612/828/+273, AVB/AVAB via Vertrags-Feld; § 67: Sechstel = kumulierte laufende Brutto × 60 ÷ Lohnsteuertage, Fixsatz- Pakete 620-frei/24.380-6/25.000-27/33.333-35,75, Freigrenze 2.615 → tarifisch, Abs 10-Überschuss → LSt-lfd, Günstig- Aufrollung je SZ-Zahlung, Abs 12 SV-SZ vorher; § 68-Buckets szfn/ue_std mit zuschlagsanteil-Quote + Stunden-Caps 15/170 versioniert; DN-SV kv/pv/av/ak/wf HBG-capped, Wien 0,75 via Company-Flag; Fünftelregelung-Utility), `data/rule_parameters_lst_2026.xml`, Flags auf hr.salary.rule/ hr.version/res.company. Laufzeit-Architektur: dünne Regeln reichen `result_rules` (localdict) an die Kern-Computes — compute_sheet legt Zeilen erst NACH der Regelschleife an; Code-Regeln: Menge über `result_qty` (quantity-Feld nur fix/%). TASY-Wizard: 2 Latenzfehler behoben (Binary-b64-Dekode in `_tasy_root`; `_get_parameter_from_code` liefert geparste Werte/None, nicht Records → `_line_vals`/Test_01 korrigiert) — TASY-Suite 4/4 erstmals laufend. Privat 19.0.3.0.0: salary_rules_lst_private.xml (SVDN_KV/PV/AV/AK/WF, LST_LFD, LST_SZ; Sequenzen 60-71), GP2-Regeln per-unit + result_qty + Bemessungs-Flags (KVGEO/UE_*/MEHR_*/NACHT_SV laufend, B13/B14/ B14_RUECK sonstig, §-68-Buckets). Tests: Kern 13 + TASY 4 + privat 8/21/6 = **52/52 grün**; Rechenfälle `docs/rechenfaelle/lohnsteuer.md` (RF-L1–L8). - **GP2 Entgelt-Engine General-AT umgesetzt (29/29 grün)** (2026-09-11): `l10n_at_hr_payroll_private` 19.0.2.0.0 — `data/structure_private.xml` (Type/Structure/ATP-Kategorien, country base.at wg. Regel-Länder-Konsistenz), `work_entry_types_private.xml` (10 WETs: ATT_NACHT, UE_STD, UE_NACHT 22–6, UE_NACHT_FRUEH 20–22, UE_SOFEI(_NACHT), MEHR_VZ(_NACHT) § 4a, MEHR_TZ(_NACHT) § 19d; €-Flag `l10n_at_nacht_sv` auf 22–6-Typen), `salary_rules_private.xml` (16 Regeln, alle kv.wert-getrieben), `input_types_private.xml`, `models/payslip_private.py` (Arbeitstage-Faktor, Grundstunden, Nachtstunden, B13/B14-Fälligkeit/-Basis/-Aliquot (sz_aliquote_ methode 'kalendertage'), 7-von-12-Ø, All-in-Deckung), hr.version- All-in-Felder. Kern: rule_parameters_2026.xml + 2 Parameter. `test_entgelt_private.py`: 21 Tests aus den Rechenfällen (KVGEO 4, Zuschläge/Nacht 5, Mehrarbeit 2, B13/B14 6 inkl. Rückverrechnung + Mischberechnung, Urlaubs-Ø, Netto, All-in). D4-Mechanik dokumentiert; GemBG-Latenzfehler (s. Open issues) im Bgld-Track gemeldet, nicht fremd-editiert. - **GP2-Daten-Vorlauf Referenz-KVs komplett** (2026-09-11): Programmabgleich Seed ↔ `oegb/texts/` (Fassung 20260101): 18 Gehaltstafeln (2203 II–VI/M1/M2/M2FS/M3; 2748 I–VI/IV-M/V-OM/ MEISTER) wertestgleich — M2/M2FS = Fachschul-Teilüberschriften, V-OM manuell (Tabelle ohne Kopf) — 0 Korrekturen; `kv.wert`- Eckwerte mit §-Anker dokumentiert (RQ Abschnitt 2). Neue Codes: `sz13_basis_monat` (auszahlung|november), `sz14_basis_monat`, `sz14_no_urlaub_monat`, `ue_fenster_von/bis`, `nacht_sv_fenster_ von/bis`. AZG ✅ (RQ Abschnitt 3): § 6 ÜStd-Begriff, § 7/§ 9 Ausmaß, § 10 Vergütung (50 %-Minimum, KV-Deviation → Teilungs- faktor), § 12a Nacht 22–5 vs. § 12b 22–6 (⚠ Norm-Divergenz), § 19d Teilzeit-Mehrarbeit 25 %. Plan-Korrektur 4.2/6: drei Nachtfenster korrekt attribuiert (AZG/KV/LSt); §-124b-Historie bereinigt (15 ÜStd/170 € 2026; keine „ab 2027 10/120"-Änderung). Rechenfälle `addons/l10n_at_hr_payroll_private/docs/rechenfaelle/` (4 Docs, GP2-Testfixtures). Validierung: `test_kv_katalog` 8/8 mit erweitertem Seed (`-u` statt `-i` bei installiertem Modul), `_wert`- Lookups geprüft, Import-Wizard mit realem 2027er-Batch validiert (Sprungwarnung > 10 % triggert + blockt Anwendung). 2748-2027er- Tafeln (+2,0 %) dokumentiert → GP8-Seed. Plan 8.2/8.8 ✅, RQ-11 getickt. - **KB-Konfliktfamilien A1–A10 gelöst (A-Runde 2026-09-11):** Nutzer- Kommentare aus `LOESUNG-KONFLIKTE.md` gegen bereitgestellte Primärquellen verifiziert (5 parallele Quell-Agenten; ÖGK- Beitragstarifsystem `.additional_docs/oegk/` + TASY-LSWH-Export 2026-03-24; AMS-Merkblatt + AMS-Webseite Stand 03.02.2026; LStR 2002 Abschn. 19.3 Rz 1070–1079c Stand 19.12.2022; ASVG-§-108/BSVG- §-23/EO-§§-291a+292-Briefings; §-617-ASVG-Kompendium + PVA + BGBl I 2023/11). **A1** §-124b-Familie als Historie geschlossen (Maßnahme bis 31.12.2025; 2026 via § 68 Abs 1/2 EStG). **A2** DN-SV 17,07 % („17,57 %" = +AK 0,50 ohne WF); DN-Gesamt 18,07 % (Wien 18,32), DG 20,98 % (Wien 21,23); WBF-Wien 1,5 % gesamt (0,75/0,75) ab 1.1.2026 (Wiener WF-Zuschlag, TASY Tarif 1535). **A4** ⚓ Blockzeit-Ersatzquote 2026 = 27,5 % („28,5 %" lb-atz-07 = Quellenanomalie); ÜStd/Mehrleistung: kontinuierlich ab 2026 in Ober-/Unterwert außen vor, Blockmodelle mit ÜStd im Oberwert (AMS-Praxis); All-In offen. **A5** § 67 Abs 3 = zwingendes Günstiger-Prinzip (LSt = günstigeres aus Vervielfachungsmethode und Fixsatz 6 %; frühere RQ-Formel „mindestens 6 %" war invertiert) + SV-frei § 49 Abs 3 Z 7 ASVG (lb-end-01 ✅). **A6** ⚓ „Wegfall des ALV-Beitrages" während ATZ als AMS- Praxisbeleg; Endfassung/§-Zitat RIS. **A7** AK-Umlage = 0,5 % DN (RQ „nur DG" falsch; Kern-Parameter korrekt); § 53a-Beitrag = € 14,12/Monat. **A8** HBGL zwei Stränge: ASVG § 108 Abs 3 Kalendertagwert (231 € 2026 → 6.930 €/Monat) vs. GSVG/BSVG (§§ 48/53a GSVG) = 35× Tageswert (8.085 € 2026); lb-sva-08 = 22,8 % × 8.085 exakt. **A9** „allgemeiner" vs. „erhöhter allgemeiner Grundbetrag" (§ 291a Abs 2 Z 1, ×7/6 ohne §-290b- Leistungen); absolutes Minimum = halber allgemeiner Grundbetrag (§ 292 Abs 4): 500 € (2021) vs. 515 € (2022) = Stand-Differenz. **A10** ⚓ lb-pvs-02 bestätigt (§ 617 Abs 11 idF BGBl I 2023/11, 65 erst für nach 30.6.1968 Geborene), lb-swa-03 widerlegt; Altrecht 1.1.1955 vs. LZP-Kohorte 1.1.1954 = zwei Institute; Bonus-Maxima offen. **A3-Nachtrag (2026-09-11):** Formel-7-Mechanik vertieft (Nutzer-Analyse + lb-son-04 Fn 3); **Rz 243 LStR idgF via findok verifiziert** (26. Fassung 18.12.2025 — nicht obsolet; Grenzgänger-Grundlage § 16 Abs 1 Z 4 lit f EStG: ausländische Pflichtversicherung in voller Höhe ohne HBGL-Cap); offen bleibt allein die Verwaltungspraxis-Änderung zur SV-DN-Verteilung auf §-68-Bezüge. Umgesetzt: `KB-KONFLIKTE.md` (A-Lösungs- blöcke + „Nächste Schritte"), `RECHTSQUELLEN-Privat.md` Ab- schnitte 4+5 (AK-Zeile, WF-Wien-Zeile, DN-/DG-Gesamtsatz-Zeilen, HBGL-Systematik, § 67 Abs 3, LStR-19.3-Vermerk), `RUNBOOK.md` (A-Lösungsrunde-Eintrag + Batch-Marker), `MEMORY.md`; `.gitignore` + `.additional_docs/`; `LOESUNG-KONFLIKTE.md` nach Integration gelöscht (Nutzer-Freigabe); Layer-2-Einträge unberührt (Beleg-Prinzip) → `--registry`/`--check` unverändert. Engine-Protokollnotiz: WF-Wien-Zuschlag (+0,25/0,25 ab 1.1.2026) fehlt als rule parameter (GP2–GP4-Designinput). - **KB-Konflikte — 2. Verifikationsrunde (2026-09-11):** Nutzer-Quellen `estg67.pdf`, `gsvg48.pdf`, `gsvg53a.pdf` (= **§ 53a ASVG**, nicht GSVG — Dateiname täuscht), `alvg82.pdf`, `BGBLA_2023_I_11.pdfsig` + RIS-Fetches via firecrawl (§§ 45/49 ASVG, AlVG §§ 4/25/27/82, AMPFG §§ 1/2/3/25, APG § 5): **A5 ✅** 6 %-Fixsatz im Gesetzestext (§ 67 Abs 3 idgF, BGBl I 144/2024; Günstiger-Prinzip als Normtext). **A7-Korrektur** — Geringfügigen-Beitrag = **14,12 % der allgemeinen Beitragsgrundlage** (§ 53a Abs 3 ASVG: KV 3,87 + PV 9,25 + 1,00 Zusatz; DG-UV 1,1 % § 53a Abs 1): lb-sva-06-%-Spalte war richtig, die 1.-Runde-Lesung „14,12 €/Monat" falsch — RQ korrigiert; Euro 2026 ≈ 77,80 €/Monat (14,12 % × GFG 551,10 €; GFG-Basis-Fundstelle offen). **A8 ✅** § 48 GSVG: HBGL = 35facher Betrag der HBGL gemäß § 108 Abs 3 ASVG; § 45 Abs 1 ASVG = Anwendungsnorm („gemäß § 108 Abs 1 und 3 festgestellt") — Zitierfrage = Normenkette, TASY-Label ungenau. **A4 ✅ Normbasis** § 82 Abs 7/8 AlVG (Ersatzquoten- Staffel 42,5/35,0/27,5/20,0/10,0 vH, ab 2029 keine Abgeltung; Ober-/Unterwert via § 27 Abs 2 Z 3 + Abs 5 AlVG — Fassung BGBl I 118/2023, ab 1.11.2026 BgBG I 62/2026; § 27 AlVG am 11.09.2026 nicht in Kraft). **A6 weitgehend ✅** „BgBG" = Budgetbegleitgesetz 2027–2028, **BGBl I 62/2026 verkündet** (ASVG § 49-Fassung gültig ab 1.1.2027, NOR40279632); §-25-Zitierdivergenz = Doppelfehlzitat (AlVG § 25/AMPFG § 25 nicht in Kraft); AMPFG-Kurztitel-Falle „-Finanzierungsgesetz" (10008903; ALV-Finanzierung § 1 Abs 2 Z 3). **A10 ✅ Bonus** § 5 Abs 4 APG idgF (BGBl I 47/2025): Aufschubbonus +0,425 %/Monat, **Cap 15,3 % der Leistung** — kein €-Fixwert im Gesetz (Briefing-€-Werte = Rechenbeispiele); § 299a ASVG historisch (§ 617 Abs 2); BGBl I 11/2023 ohne Bonus-Änderungen. Offen: A3 (Verwaltungspraxis vs. Rz 243 idgF), A4-All-In, A6-Entfall-Wortlaut, AZR-VO-Werte (A9), AK-Umlage-§-Fundstelle (Arbeiterkammergesetz). - **KB-Konflikte B1–B18 gelöst (B-Runde 2026-09-11):** Auflösungsvorlage `B_KONFLIKTE_AUFLOESUNG.md` des Nutzers gegen die bereitgestellten RIS-Normtexte (`.additional_docs/ris_normtexte/`, tagesaktuell 11.09.2026, Manifest `README_RIS_DOWNLOAD.md`) verifiziert — 18/18 geprüft, 14 × ✅, B17 🔧, 3 × ⚠ (B3/B14/B18 als genuine Divergenzen dokumentiert). Kernwerte: SBV § 2 Abs 7a Kleinwohnung 35/45 m²/ 35 % Abschlag (30,1–40 = alte Fassung vor BGBl II 290/2024); APflG § 4 Abs 4 3-Monats-Schwelle (kein 4-Monats-Band); GlBG § 12 Abs 5 Z 1/ BehG § 7e Abs 2 Z 1 Entgeltdifferenz ≥ 3 Monate, € 1.000 = Belästigung (§ 12 Abs 11/§ 7i Abs 1); ArbVG § 97 Abs 1 bis Z 27 (Telearbeit); GF-Schwelle > 25 % (EStG § 22 Z 2 iVm § 47 Abs 2 → ASVG, sonst GSVG § 2 Abs 1 Z 3); GKV 2025; AZG § 7 Abs 6; EuGH C-55/18 (Zeiterfassung) vs. C-254/18 (17-Wochen-Durchrechnung); IESG § 1 Abs 4/4a HBG- Relationen 2026 (1× 6.930 · 1,5× 10.395 · 2× 13.860); DSB 6 Monate; EFZG § 2 56 Tage ab 2. DJ; BSVG § 23 Abs 2 Versicherungswert 4.610,29 € = Stand 2026 (jährlich × Aufwertungszahl § 45); EStG § 68 Abs 1 idF BGBl I 43/2026 Feiertagsarbeitsentgelt im 400-€- Korridor ab LZP 2026; EStG § 67 Abs 6 (Zitat-Fix; Zwölftel-Deckel 3× monatliche HBG = 20.790 €). Umgesetzt: `KB-KONFLIKTE.md` Abschnitt B (A-Runden-Format) + C1-Verweis + „Nächste Schritte“, `RUNBOOK.md` (B-Lösungsrunde-Block + Batch-Marker + A6-Kennzeichnung), `MEMORY.md`; Layer-2 unberührt (Beleg-Prinzip) → `--registry`/ `--check` unverändert. Engine-Designnotizen in KB-KONFLIKTE „Nächste Schritte“ Punkt 8 (IESG-HBG-Relationen, EFZG-Stufen, §-67-Abs-6-Deckel, §-68-Abs-1-Korridor, GF-Schwelle, SBV-Werte, BSVG-Versicherungswert). - **WIKU-Intake Batch 1 komplett — Wissensbasis jetzt Zwei-Quellen- Korpus mit 601 Einträgen** (2026-09-11): Multi-Source-Erweiterung von `personalverrechnung/tools/build_lexis_kb.py` fertig (`--source lexis|wiku|all` für `--extract`/`--check`, `--registry` über beide Quellen; `WIKU_PINS`-Tabelle für alle 30 Publikationen statt Lexis-Breadcrumbs; `WIKU_PAGE_RE` entfernt Seitenzähler-Footer; wk-ID-Raum `wk--` mit eigenem Katalog + ID-Freeze). Layer 1: 30/30 extrahiert (`.wiku/md/`, Katalog ohne Warnungen; „Personal aktuell“-Stand = Heft-Monat). Layer 2: 30 kuratierte Einträge `wiku_.md` (18 Broschüren/Unterlagen/Casebooks + 12 Hefte „WIKU Personal aktuell“ 2026, wk-akt-01…12; Heft- Kuration via 6 parallele Agenten mit je Selbstprüfung, zentrale Prüfung 30/30 grün). Registry/Check: **601 Einträge, 69 Cluster, lexis 571/571 + wiku 30/30, 0 Probleme** — inkl. Fix eines Slug-Bugs in `curated_slugs_for()` (`.md`-Suffix wurde nicht gestrippt, wiku-`--check` wäre immer rot gelaufen). README/ RUNBOOK auf Zwei-Quellen-Korpus umgestellt (Cluster-Tabelle akt/gwe, Update-Zyklus je Quelle, WIKU-Batch-1-Konfliktliste im RUNBOOK). Wichtige WIKU-Konfliktfamilien (alle ⚠ in den Einträgen + RUNBOOK): §-124b-Zitier-Varianten wachsen (wk-akt-01 „Z 440/492“, wk-akt-07 Mitarbeiterprämie „Z 478 vs Z 477“ — Auflösung ÜStd/ Feiertagsentgelt via BGBl I 43/2026 = wk-akt-04 ✅ deckungsgleich mit verbindlicher Rechtslage); SV-DN-Anteile auf §-68-Bezügen vom Abzugsverbot § 20 Abs 2 Z 1 EStG erfasst (wk-akt-11, „Formel 7“ gefährdet — neue RIS-Klärungsfamilie); DN-Satz freie DN 17,57 vs 17,07 % (wk-akt-10); WF-Wien 1,5 % (wk-akt-07 → lb-lnk-05-Familie); ALV-Entfall RV vs Endfassung (wk-akt-03/04); SV-Werte 2027 voraussichtlich (wk-akt-05/06); AMS-All-In/ATZ-Oberwert-Auslegung (wk-akt-09). Temporäres Selbstprüfungsskript entfernt (dauerhafte Gates = --registry/--check). - **Dev-Host aufgesetzt; GP1-Runtime-Abnahme grün** (2026-09-11): PostgreSQL 18.6 (Arch-Paket; Cluster `/var/lib/postgres/data`, systemd-Service, Superuser-Rolle `fegger`), Python-3.14.7-venv `.venv/` (editable install des gemergten Baums; requirements inkl. py3.14-Pins bauen: psycopg2/gevent/python-ldap aus Source), Dev-DB `odoo_dev`. GP1: `l10n_at_hr_payroll_private` installiert + `test_kv_katalog` **0 failed, 0 errors (8 Tests)**. Core/GemBG-Suiten auf Wegwerf-DB `odoo_test` (danach gedroppt): **Install-Abbruch** — `payroll_structure_bgld.xml` L19 setzt `regular_pay` auf `hr.payroll.structure`; Feld existiert weder im neuen (e.20260910) noch im alten (19.0.0) Baum — latenter Bug, nur runtime sichtbar (Fix = Bgld-Track-Aufgabe). Alte Checkouts `odoo/` (19 GB) + `odoo_enterprise/` (2,1 GB) gelöscht; `.gitignore` jetzt `odoo_19.0+e.20260910/` + `.venv/`. Doku-Updates: README (Entwicklung/Tests), privater Modul-README, IMPLEMENTIERUNGSPLAN-Privat (Quellen-Referenz-Update 2026-09-11 in Abschnitt 2). - **General-AT: Beschaffungsliste abgearbeitet (Primärquellen lokal)** (2026-09-10): 19 RIS-Gesetzestexte (Fassung 10. 09. 2026) via firecrawl nach `.firecrawl/ris/` — Gesetzesnummern ausnahmslos per RIS-Titelsuche ermittelt (Kurztitel-Fallen entdeckt: AVRAG „Arbeitsvertragsrechts-Anpassungsgesetz" 10008872, BMSVG „Betriebliches Mitarbeiter- und Selbständigenvorsorgegesetz" 20002088, IESG „Insolvenz-Entgeltsicherungsgesetz" 10008418, APSG „Arbeitsplatz-Sicherungsgesetz 1991" 10008788; weitere: AZG 10008238, AngG 10008069, ArbVG 10008329, ASVG 10008147, EStG 10004570, BAO 10003940, AÜG 10008655, UrlG 10008376, LKV 20004237, MSchG 10008464, MSchV 20010035, VKG 10008674, KBGG 20001474, FamZeitbG 20009586, KommStG 10004841); LStR 2002 findok-XML (RZ_N-Markup beachten); DM-ORG 42.7.0 + Änderungsprotokoll (07/2026) + Prüfkataloge L16 12/2025/L17/§ 109a/§ 109b + Mitteilungsfiles-XSDs (elda_mitteilung 1.2/2.1/3.0); SV-Werte 2026 (HBGL 6.930/GFG 551,10 ✅ deckungsgleich; GFG-Aufwertungsaussetzung § 810 Abs 3 ASVG); BMF-L16-Formularseite. RQ-11 auf [x]-Beschaffungsstände umgestellt; RUNBOOK-Sektion „Primärquellen-Downloads" neu; `.firecrawl/ris/_README.md` als lokales Verzeichnis. **Befund:** „Krankengeldumlage § 62 ASVG" = Falsch-Prämisse (RIS- Gesamtabfrage 0 Treffer; § 62 = Beitragsabrechnung) — als Auflösung in RQ-Privat (4/11/13) + Plan (2.1/4.6/4.7/8.10) dokumentiert; Bgld-Dokumente (RECHTSQUELLEN-Bgld 9, PLAN- payroll-bgld) führen denselben Prüfpunkt und sind analog zu verifizieren — bewusst nicht fremd-editiert. - **General-AT: KB-Rechtsquellen-Abgleich dokumentiert** (2026-09-10): alle 571 KB-`legal_bases` (2.767 Strings, ~130 Normwerke) gegen `RECHTSQUELLEN-Privat.md` geprüft (Skript über kb.json; §-Ebenen kontextverifiziert gegen False Positives wie EOSB→EO, UrlG § 10→KommStG § 10). Befund: 15 Gesetze im RQ (EStG, ASVG, AZG, UrlG, AngG, ArbVG, BMSVG, FLAG, KommStG, AMPFG, IESG, LStR, BAG, BUAG/BFAK, ARG) + UGB als Matrix-Beschaffungspunkt; ~85 Normwerke bewusst außerhalb R1; 12 echte Lücken. Umgesetzt nach Nutzer-Freigabe: RQ **Abschnitt 13** (Abgleichsmatrix + Zuordnung + Outside-Scope-Abgrenzung) + **Beschaffungslisten-Erweiterung** Abschnitt 11 (AVRAG § 2g/§ 11a Abs 4, ASVG-Block §§ 11/33/34/41/ 471a/49/44/51/53b/60/143, EStG §§ 3/63/67a/69/109a/124b Z 478, KommStG § 10 + BAO §§ 4/29/30, AÜG, UrlG §§ 7/10a, BMSVG §§ 7/ 9–12/27a/47, IESG § 12, Lohnkontenverordnung, Mutterschutz-/ Karenz-Block) + Plan 4.2 AVRAG-Feinmechanik + 8.13 Karenz-Block- Kandidat + Abschnitt-10-Nachtrag; CHANGELOG-Eintrag. BMSVG § 12 korrekt als Zukunftssicherungsmaßnahme (§§ 9–12) identifiziert (nicht Meldung). - **General-AT: Implementierungsplan an Wissensbasis angebunden** (2026-09-10): `personalverrechnung/IMPLEMENTIERUNGSPLAN-Privat.md` aktualisiert (Stand 2026-09-10) — neuer **Abschnitt 2.1** (Verbindlichkeits-Regime: RECHTSQUELLEN-Privat verbindlich, KB Sekundärquelle mit ID+Stand; Cluster→GP-Anker-Tabelle; Nicht-enthalten-Liste: Krankengeldumlage § 62, JASV, LStR 2002); 4.2 Regelinventar um KB-Anker-Spalte + GP2-Feinmechanik erweitert (Mehrarbeit § 19d vs. ÜStd inkl. Differenzstunden LStR Rz 1146, zwei Nachtfenster 22–5/19–7, Feiertagsarbeitsentgelt 2026 wieder §-68-begünstigt); 4.3 GP3-Feinmechanik (Sechstelformel × 60 ÷ Lohnsteuertage, Nachzahlungsmodi Rollung/15.2./Fünftel/Tarif, SV-Anspruchsprinzip) + GP4-Neuheiten (DZ §§ 122/126 WKG — bisher fehlende DG-Abgabe, Satzvektor BL × Jahr, ⚠ RIS; DAG 19,4 %; beitragsfreie §-49-Abs-3-Kumulative; AK-Umlage/WF als DN-Lohnabzüge; altersabhängige Satzausschaltungen); 4.4 BMSVG-Feinmechanik (freier Monat taggenau, § 7-Fiktionen, Abfuhr KV-Träger); 4.6 L16-KZ/ mBGM/Schwerarbeitsmeldung; 4.7 Aufrollungslauf + Fristenkalender; Abschnitt 8 um 8.11 (DZ-Grundsatzentscheidung), 8.12 (KB- Konfliktfamilien RIS-klar), 8.13 (Scope-Kandidaten ohne stille Erweiterung) erweitert; Abschnitt 10 dokumentiert das Update; `docs/CHANGELOG.md` Eintrag. Werte ausschließlich aus KB-Einträgen (Recherche über 4 parallele Subagents über sva/lnk/bes, azg/ues/ zus/url/efz, son/naz/lvr/prm, lvr/mel/vor/end/pfa/krs/nsc-Cluster). - **Lexis360-Wissensbasis Batch 9** (2026-09-10): 67 gelieferte PDFs (im Unterordner .lexis360/batch9/) → Intake-Bereinigung: 4 text- identische Duplikate entfernt, 5-fach trunkierter Exportname der BSVG-Freiwilligen-Versicherungs-Briefings explizit umbenannt, Mehrfachversicherung KV/PV disambiguiert, ß-URL-Kodierung normalisiert → 63 Briefings (Stände 2025-01 bis 2026-08) in 5 neuen Clustern (bsv 18 · sva 16 · gsv 12 · pvs 13 · kvs 4), neues Kapitel „Sozialversicherung“ → gesamt **571 Einträge/67 Cluster**. Tool: BATCH 9, TOPIC_MAP-Pins für alle 8 SV-Topic-Gruppen (inkl. „abfertigung-fur-selbststandige“ → gsv, bevor der „abfertigung“- Keyword-Fallback es dem end-Cluster stiehlt), KEYWORDS-Block 9 vor Block 8, 5 neue CLUSTERS/TOPIC_TO_PREFIX-Einträge. Curation in 7 parallelen Gruppen mit je Self-Check (/tmp/check_batch9.py), zentrale Prüfung 63/63 grün; DN-Beitragssätze 2026 ✅ deckungsgleich mit RECHTSQUELLEN. Querverweis-Nachtrag lb-swa-03 → lb-pvs-02/12/13. Katalog/Registry/Check 571/571 grün; Konflikte im RUNBOOK (Wissensbasis, Batch-9-Abschnitt). - **Lexis360-Wissensbasis Batch 8** (2026-09-10): 134 Briefings (Stände 2025-06 bis 2026-08) → 134 kuratierte Einträge in 6 neuen Clustern (bnd 44 · brt 35 · end 25 · bso 10 · mel 8 · ins 8) plus Erweiterungen (url 14→16, son 4→5, prm 6→7); sechs neue Kapitel (Beendigungsarten; Betriebsrat & Betriebsvereinbarungen; Beendigungsansprüche & Endabrechnung; Beendigungsphase - Sonstiges; Meldungen & Verpflichtungen; Unternehmensauflösung & Betriebsübergang) → gesamt **508 Einträge/62 Cluster**. Curation in 12 Gruppen (g1/g2 vorab, Rest via 10 parallele Subagents mit je Self-Check — Frontmatter katalogexakt, auflösbare cross_refs, ASCII-Tags, Struktur); Orchestrator-Korrekturen: lb-brt-01 falsch gelabelter cross_ref lb-ent-01 → lb-aug-01 (SV-Meldepflicht-Verweis → lb-mel-08); 9 Lückenschluss-Nachträge in Alteinträgen (ent-02→brt-19/22/28/29, ent-11→end-26, prd-04→brt-13, rhz-04→bnd-43, vor-10→end-01/02/03/16, kar-01→end-01/02, lvr-02→end-06/25, prm-03→end-18, sac-06→bso-03+prd-03). ID-Lücken by design (lb-brt-24, lb-end-07, lb-bso-08 — Fossil-Korrektur-Nummern, nie wiederverwendet). Katalog/Registry/Check 508/508 grün; Kernwerte-Spotchecks (bnd-41 Staffel, mel-03 DSB-Frist, end-21 SV-Sätze) gegen Layer 1 bestätigt. Batch-8-Konflikte im RUNBOOK (Wissensbasis-Abschnitt). - **Lexis360-Wissensbasis Batch 7** (2026-09-10): 97 Briefings (Stände 2026-06 bis 2026-08) → 97 kuratierte Einträge; 16 neue Cluster (url 14, krs 9, grz 8, kzs 7, elt 6, kar 6, kbg 6, prd 6, tel 6, msf 5, dvh 4, aug 2, efz 2, pap 2, pfl 2, wie 2), bestehende erweitert (asc 12→16, sch 1→7); fünf neue Kapitel (Urlaub & Karenzierung, Schwangerschaft & Elternkarenz, Krankenstand & Arbeitsunfall, Dienstverhinderung, Außerhalb des Betriebsstandortes) → gesamt **374 Einträge/56 Cluster**. Drei truncated Export-Duplikat-Dateinamen (auslandstatigkeit_sv_tatigkeit_in ×3) vor der Extraktion explizit umbenannt. Ein Agentendurchlauf stalled bei 82/97 (ab 14:43 Stillstand, durch Nutzer abgebrochen) — Restarbeit (asc-13…16 Arbeitsunfall; dvh/efz/pfl Dienstverhinderung; grz-08/aug Standortverlegung + AÜG) via drei paralleler Subagents; sieben Frontmatter-topic-Werte des früheren Durchlaufs auf Schema-Werte korrigiert (papamonat-und-familienzeitbonus→familienzeit ×2, geburt-schutzfrist→schutzfrist ×4, wochengeld→schutzfrist). Katalog/Registry/Check 374/374 grün. - **Wissensbasis-Skill + WIKU-Quelle** (2026-09-10): `.agents/skills/wissensbasis/SKILL.md` neu — verbindliche Regeln für den Wissensbasis-Bau (Schichten/Lizenz D1, ID-Freeze, D2-Frontmatter, Kurationskonventionen, Batch-Workflow, Validierungsgates, Intake- Pitfalls) konsolidiert aus README/RUNBOOK/MEMORY; neu: WIKU-Quelle `.wiku/` (31 lizenzierte PDFs: Fachbroschüren, Arbeitsunterlagen, Casebooks, „WIKU Personal aktuell“) mit Integrationsmodell siehe Entscheidung unten. `.wiku/` in `.gitignore` (D1); `AGENTS.md` Skill-Auswahl ergänzt. - **Lexis360-Wissensbasis Batch 6** (2026-09-10): 41 Briefings (Stände 2025-06 bis 2026-08) über zwei neue Kapitel (Arbeitnehmerschutz, Verhaltenspflichten) + Schwerarbeit (Arbeitszeit-Kapitel) → 41 kuratierte Einträge in 7 Clustern (asc 12, dnh 7, glb 7, fir 6, wei 3, swa 5, mob 1); ein ß-Dateiname normalisiert; ein Fossil-ID (lb-mip-05 → lb-swa-05) bereinigt; Parser-Härtung: Breadcrumb-Wrap auch nach erstem „·“ (neue Wrap-Variante). Zwei Agenten zwischen- durch abgebrochen — Restarbeit (asc-04…12, glb/mob) nachgeholt. Querverweis-Nachträge lb-beh-04→lb-glb-*, lb-sch-01→lb-asc-01. Katalog/Registry/Check 277/277 grün. - **Lexis360-Wissensbasis Batch 5** (2026-09-10): 31 Briefings (Stände 2025-12 bis 2026-07, Kapitel „Arbeitszeit“ — drittes Kapitel) → 31 kuratierte Einträge in 8 neuen Clustern (azg 4, azm 7, mip 4, nsc 3, rhz 4, sch 1, ues 4, zer 3) + lb-jug-08; ein ß-URL-kodierter Dateiname normalisiert. Keine Fossil-IDs (spezifisch-vor-generisch-KEYWORDS wirkten). RECHTSQUELLEN-Abgleiche: §-68-ÜStd-Freigrenzen 2026 (15/170 €) ✅ via lb-zus-07; Kurzarbeit-Lehrlinge trianguliert (lb-azm-05 → lb-leh-07). Drei Beschaffungslücken geschlossen (lb-jug-04/05 → lb-jug-08, lb-zer-01/02). Katalog/Registry/Check 236/236 grün. - **Lexis360-Wissensbasis Batch 4** (2026-09-10): 54 Briefings (Stände 2026-06 bis 2026-08) → 54 kuratierte Einträge in 6 neuen Clustern (lsd 13, pfa 14, gpl 7, lnk 7, lvr 9, naz 4); Dubletten-Export entfernt (identischer Text). RECHTSQUELLEN-Abgleiche: FLAF-DB 3,7 %/KommSt 3 %/ IESG 0,10 %/WBF (übrige BL 1 %) ✅; Freibetragsstaffel ✅ via lb-lnk-03 (Quellformulierung in lb-lnk-02 invertiert — dokumentiert); WBF-Wien 1,5 % vs 1,0 % ⚓ dokumentiert. Querverweis-Nachträge lb-sac-13→lb-lvr-02, lb-sac-21→lb-lvr-05. Tool-Fixes: assign_ids-Rückgabe-Warnungen (NameError beseitigt), KEYWORDS-Reihenfolge spezifisch-vor-generisch, 7 Fossil-IDs (Pass-1-Keyword-Fehlgriffe) bereinigt. Katalog/Registry/ Check 205/205 grün. - **Lexis360-Wissensbasis Batch 3** (2026-09-10): 44 Briefings (Stände 2025-06 bis 2026-08, Kapitel „Entgelt: Anspruch & Abrechnung“) → 44 kuratierte Einträge in 6 neuen Clustern (rei 9, vor 11, son 4, zus 8, pen 9, ges 2) + lb-ent-11; zwei URL-kodierte Export-Dateinamen (%c3%9f = ß) normalisiert. RECHTSQUELLEN-Abgleiche durchgeführt (§-67-Staffel, §-68-Freigrenzen, BMSVG-Kernwerte, ALV-Staffel — deckungsgleich bis auf dokumentierte ⚠-Punkte); lb-prm-04-Querverweis auf lb-son-03/04 nachgetragen. Katalog/Registry/Check 151/151 grün. - **Lexis360-Wissensbasis Batch 2** (2026-09-10): 52 neue Briefings (Stände 2025-06 bis 2026-08, Kapitel „Entgelt: Anspruch & Abrechnung“ + „Beschäftigungsverhältnisse“) → 52 kuratierte Einträge in 7 neuen Clustern (beh, ent, gsf, lei, prm, sac, vst) + lb-leh-16; Katalog 107/107, Registry/Check grün. Tool-Härtung: Multi-Batch-batch-Validierung (1..N), dynamische Batch-Anzeige (kb.json `batches`, INDEX-Header), --extract-Warnung bei eingefrorener ID mit abweichendem Cluster-Präfix (fing lb-jug-08-Fossil aus Pass 1, korrigiert zu lb-sac-21 vor Kuratierung); Duplikat-Export (`geschaftsfuhrer_arbeitsrecht (1).pdf`, identischer Text) entfernt. Batch-1-Dokumentation in README/RUNBOOK auf Batches 1–2 umgestellt. - **Lexis360-Wissensbasis Batch 1** (2026-09-10): 55 PDF-Exporte aus Lexis 360 („Lexis Briefings Personalrecht“; Stände 2024-03 bis 2026-09) → 55 kuratierte Einträge in `personalverrechnung/wissensbasis/dokumente/` (Zusammenfassung/Kernwerte/Rechtsgrundlagen/Payroll-Relevanz/Verweise, Stand-Marks, ✅/⚠/❓), `README.md` (Schema/Konventionen), generiert `kb.json` + `INDEX.md`, Tool `personalverrechnung/tools/build_lexis_kb.py` (--extract pdftotext-Pipeline; --registry Frontmatter-Validierung ohne PyYAML inkl. cross_refs/topic↔ID-Präfix; --check Layer-1↔Layer-2- Vollständigkeit; ID-Freeze über `_catalog.json`). RUNBOOK um Wissensbasis-Workflow (Batches, Validierung, Limitierungen) erweitert. - **GP1 KV-Framework General-AT** (2026-09-09): `l10n_at_hr_payroll_private` 19.0.1.0.0 implementiert — Modelle `kollektivvertrag.py` (kv/kv.wert/ kv.gruppe/kv.gruppe.stufe) + `hr_version_private.py` (Vertragsfelder, Muster `hr_version_bgld.py`), Wizard `kv_katalog_import.py` (Vorschau, Sprungwarnung, Versionierung), Views/Menus/Security, Seed D2 mit SI-2203/SI-2748-Tabellen 2026 (inkl. Sonder-Vorrückungsverläufe IV-M/V-OM im SI-2748, aufgelassene VG I im SI-2203, Nacht-€-Satz als Jahresversionen 2,71/2,76 €). Test-Suite `test_kv_katalog`: Seed-Lookups, Stichtags-Lookup, Versionierung, Eckwerte, Wizard (Sprungwarnung/Aktualisierung/Neuaufnahme), Vertragsfelder. - **GP0-Rechtsverifikationen General-AT** (2026-09-09): `RECHTSQUELLEN-Privat.md` erstellt: FLAF § 41 FLAG (RIS GesNr 10008220 — 3,7 % ab 2025, 2,7 % ab 2028; Basis Arbeitslöhne; 1.095-€-Freibetrag bei ≤ 1.460 €), KommStG 1993 (GesNr 10004841 — 3 %; § 3 Abs 3 Gemeindefreiheit; § 11 Verfahren), BMSVG (1,53 % auf Entgelt + SZ, kein HBG-Cap; § 14 Abs 2 Verfügungsausschluss; § 15 Anwartschaft statt Staffel; § 17 Verfügungsoptionen), UrlG (§ 2 30/36 Werktage; § 6 Urlaubsentgelt; § 10 Ersatzleistung), EStG 1988 (§ 33/66 Tarif 2026; § 67 sonstige Bezüge 0/6/27/35,75 % im Jahressechstel, Freigrenze 2.615 €, Kontrollsechstel § 77 Abs 4a, § 67 Abs 3/6/8 Abfertigungen; § 68 SZFN 400 €, ÜStd 10/120 €, 2026: 15/170 €, Nachtarbeit 600 €). Plan (Abschnitte 1, 4.2–4.4, 6, 8) auf Verifizierungsstand gebracht; payroll-Skill §-Zitat korrigiert. - **D4-Neuverifikation komplett** (2026-09-09): verifiziert gegen beide in-repo Checkouts — `odoo/` (Community) und `odoo_enterprise/odoo` (Odoo 19.0.0; gemergter Baum: odoo-Paket + 1.452 Addons, Community + Enterprise in einem Addons-Verzeichnis, u. a. Referenz-Lokalisierungen `l10n_be_hr_payroll`/`l10n_ch_hr_payroll`; `l10n_at_payroll` existiert erwartungsgemäß nicht); beide in `.gitignore`. Community-Teil: `hr.version` (`hr/models/hr_version.py` L35; `wage`/ `structure_type_id`/`resource_calendar_id` versioniert), kalenderbasierte Work-Entry-Erzeugung (`hr_work_entry/models/hr_version.py` L420 `_generate_work_entries` + Postprocess-Hooks L500/L506), `hr.work.entry.type` + Entry-States (`hr_work_entry.py` L39). Enterprise-Teil: `work_time_rate`/`hours_per_week` auf Version (`hr_payroll/models/hr_version.py` L48/L39), `work_entry_source` (L30; Attendance-Integration `hr_payroll_attendance/models/ hr_payslip.py` L29), `hr.payslip.run` (`hr_payslip_run.py` L23; state L31, `date_start` L41, `date_end` L45), EOSB-Muster `l10n_ae_hr_payroll` (`_inherit = "hr.payslip"` L10, `_l10n_ae_get_eos_daily_salary` L95, je-Version-Feld `l10n_ae_eos_daily_salary` L102, Structure-Type-Inherit), Engine-Mechanismen an den Bgld-Plan-Zeilenreferenzen bestätigt (`payslip._rule_parameter` `hr_payslip.py` L951, localdict, `hr.salary.rule.account_debit`/`account_credit` L11/L15, Posting-Hooks `_action_create_account_move` L54 / `_prepare_line_values` L125 / `_prepare_slip_lines` L166, `journal_id` auf Structure via `hr_payroll_account/models/hr_payroll_structure.py` L15, `hr.payslip.input.type` `hr_payslip_input_type.py` L9, `hr.payroll.structure.type.country_id` L46); `hr_payroll_account_iso20022` vorhanden. `l10n_at`-Konten (`l10n_at/data/template/account.account-at.csv`, XML-ID-Muster `l10n_at.chart_at_template_`): Sonderzahlungen 6240, Verrechnung Lohnsteuer 3540 / Finanzamt 3530 / SV 3600, Abfertigungsrückstellungen 3000, KommSt 6660, FLAF-DB 6661, DZ 6662, Wien-Abgabe 6663 — **Matrix-Lücken (GP0):** Löhne-/Arbeiter-Konto und SV-DG-Aufwandskonto fehlen im Standard-Template. Hinweis: Build mit eigenem Versionsschema (Manifests teils ohne `version`-Key, z. B. `l10n_at` „3.2.1"); maßgeblich ist `release.py` `version_info` (19, 0, 0). - **General-AT-Plan M0** (2026-09-09): `IMPLEMENTIERUNGSPLAN-Privat.md` erstellt und freigegeben — Entscheidungen D1 (Pfad), D2 (Referenz-KVs SI-2203 Handwerk/Gewerbe + SI-2748 Metallgewerbe), D3 (Kern- Vorfinanzierung durch General-AT), D4 (Odoo-19-Source kurzfristig; API-Neuverifikation in M1). Umfang: General-AT-Anteil ≈ 120–172 PT, inkl. D3-Vorfinanzung ≈ 180–258 PT (M1–M9, ~7–9 Monate). README-Modultabelle, Gerüst-README `l10n_at_hr_payroll_private` und CHANGELOG auf Planstand gebracht. - **KV-Library** (2026-09-09): `tools/fetch_kv_portal.py` (ÖGB-Portal: Sitemap/Dashboard/Structure/Slices/Topics-JSON-APIs, 593 Varianten, Catalog+Texte JSON/MD), `tools/fetch_wko_kv.py` (WKO-DB: 1.820 Übersichtsseiten, 614 aktuelle Dokumente, Match gegen Baseline), `tools/build_kv_catalog.py` (Merge, Kammer-Klassifikation, Crosscheck, manual-review-Listen), `quellen/kv/chambers/chambers.json` (Kammer-Quellen kuratiert, inkl. Lücken: GÖD member-only, RA/Notariat nicht öffentlich), `personalverrechnung/RUNBOOK.md` (Update-Zyklus). 407 WKO↔ÖGB-Paare, 30 Datumsdifferenzen geflaggt, 195 unklassifizierte (Einzenträger-KVs) zur manuellen Sichtung. - **Migration gem360 → odoo-at-payroll** (2026-09-09): dev-payroll nach origin gepusht (Backup), History-Import per `git filter-repo` (Branch hier: `main`), Modul-Split (TASY/SV-Layer in den Kern), Model-Rename `l10n.at.payroll.tasy.*`, Skills/AGENTS/MEMORY neu aufgesetzt, Manifest-Beschreibung auf AP1+AP2-Stand korrigiert. - Vorher (aus gem360-Historie): AP1 Katalogmodell (35 Gruppen/433 Werte 2026), AP2 Entgelt-Engine (13 Regeln, Structure GEMBG.BGLD), SV-Werte aus ÖGK TASY-LSWH; 3 Testsuiten (Katalog, Entgelt, TASY-Import). ## Open issues / blockers - **Lexis360-KB offene Punkte** (2026-09-10): Korpus-Widersprüche ⚠ vor Implementierung klären — AMS-Ersatzquote geblockte ATZ 2026 **gelöst 2026-09-11: 27,5 %** (lb-atz-07 „28,5 %“ = Quellenanomalie; s. KB-KONFLIKTE A4), DAG-Grenze 2023 (lb-bes-02 751,36 € vs. lb-bes-06 751,37 €), Lehrlinge-Kurzarbeit **gelöst 2026-09-11 (B1: lb-leh-07/azm-05 maßgeblich)**, Kleinwohnungsgrenzen **gelöst (B2: § 2 Abs 7a SBV, 35/45 m² gültig)**, Pensionisten-Begünstigung **⚠ dokumentiert — BFG RV/3100422/2024, VwGH-Revision anhängig (B3)**, **§ 124b-ÜStd-Maßnahme 2026 — RIS-geklärt 11.09.2026 (3. Runde): verbindlich Z 440 lit c idF BGBl I 4/2026, Aufrollung bis 31. 5. 2026; lb-zus-07 war richtig, „Z 476 lit c idgF BGBl I 43/2026“ = Fehlzitat (Z 476 = Pendlerpauschale)** — Familie A1 gelöst (s. KB-KONFLIKTE A1), lb-pen-09 Tabellenfehler (3.672 vs. rechnerisch 2.448 €), 183-Tage-Regel Finanz vs. UFS (lb-rei-01/02/08), Teleworker-Fahrten Finanz vs. BFG/VwGH (lb-rei-07); Alte Stände (leh 2024-03/2025-08, gsf/vst/lei 2025-06, son-01–03 2025-06) nur mit Kennzeichnung; Copilot-Deployment braucht lizenkonformen Layer-1-Bereitstellungspfad (Volltexte nicht im Repo); **Batch-4-Konflikte**: lb-lnk-02 DB-Freibetragsbedingung invertiert (RECHTSQUELLEN verbindlich), lb-lnk-05 WBF-Wien **gelöst 2026-09-11** (1,5 % gesamt 0,75/0,75 ab 1.1.2026; A2), lb-pfa-03/05 Grundbetrag- Bezeichnungen **gelöst** (A9), lb-pfa-12/14 Existenzminimum **gelöst** (Stand-Differenz 2021/2022; A9; AZR-Werte RIS-belegt 11.09.2026: 1.273,99/1.308,39), lb-lsd-13 Gesetzeszitat verstümmelt (❓ RIS), §-124b-Zitier-Varianten — **RIS-geklärt 11.09.2026: verbindlich Z 440 lit c idF BGBl I 4/2026** (lb-zus-07/lb-naz-03 „Z 440“ richtig, lb-lvr-07 „Z 449“ falsch; „Z 476“ = Pendlerpauschale-Fehlzitat) — Familie A1 gelöst (s. KB-KONFLIKTE A1); **Batch-5**: NSchG-Beitrag 2026 (3,8 %) ohne BGBl-Beleg (lb-nsc-01), § 7-AZG-Fundstelle Abs 1 vs Abs 6 (lb-ues-01/04) **gelöst 2026-09-11: Abs 6 (B9)**, MAV-START-EU-Konflikt (lb-rhz-03), KAB-Richtlinie mit alten SV-Beitragswerten (lb-azm-06); **Batch-6-Kandidaten**: Bildungskarenz, Personalrabatte bis 2015, Telearbeitspauschale, Begünstigt behinderte, Belästigung, Prämien bei Beendigung, Abfertigung Alt/Verfügungsmöglichkeiten AbfN, Corona-Kurzarbeit, Leitende Angestellte in der Rechtsprechung, pfändungsrechtliche Behandlung von Sonderzahlungen, Rückzahlung von Darlehen/Mustervereinbarung, Entgeltfortzahlung an Feiertagen, Motivkündigung, Gefahrenevaluierung und Arbeitsverbote (vollständige Liste im RUNBOOK). *Mit Batch 7 geschlossen:* Bildungskarenz (kzs), Abfertigung Alt (lb-kar-01), Entgeltfortzahlung an Feiertagen (lb-efz-01/02), Gefahrenevaluierung/Arbeitsverbote (lb-sch-04), Telearbeit (tel) — offen bleiben u. a. Personalrabatte bis 2015, Telearbeitspauschale, Begünstigt behinderte, Prämien bei Beendigung, Corona-Kurzarbeit, Leitende Angestellte in der Rechtsprechung, pfändungsrechtliche Behandlung von Sonderzahlungen, Rückzahlung von Darlehen, Motivkündigung. **Batch-7-Konflikte**: lb-asc-15 Rechenbeispiel-Kontingent **gelöst 2026-09-11: 56 Kalendertage ab 2. DJ, EFZG § 2 (B13)**; lb-aug-01/02 §-Garbel „§ 11503/§ 1503 Abs 30 ABGB“ (❓ vermutlich § 1153 Abs 30 ABGB); lb-grz-08 OGH-Folgepflicht-Judikatur vs. Quellenkritik (Reissner) — **⚠ dokumentiert, Umsetzungsentscheidung zurückgestellt (B14)**; lb-efz-01 Zeitausgleich „mind. 1 Kalendertag oder 36 Stunden“ ⚠; lb-dvh-04 Streik: Entgeltanspruch streikferner AN bei AG-zurechenbarem Streik ❓. **Batch-8-Konflikte**: lb-end-01 Abfertigung-Alt-Lohnsteuer **gelöst 2026-09-11** (Günstiger-Prinzip; RQ korrigiert; A5); lb-end-09 § 68 Abs 2 „10 ÜStd/120 €“ — A1-Familie: § 68 Abs 2 bleibt 10/120; 2026 verbindlich 15/170 € via **§ 124b Z 440 lit c** (RIS 11.09.2026); lb-end-21 Beispiel-DN-SV 18,07 % **gelöst, korrekt** (A2; die Gegenposition „17,57 %" beruhte auf der falschen DG-Zuordnung der AK-Umlage; vgl. lb-naz-04); lb-end-01/04 SV-Freiheit **gelöst: § 49 Abs 3 Z 7 ASVG** (A5); lb-brt-20/22 fakultative BV Z 7–26 vs. Z 7–27 **gelöst 2026-09-11: Z 7–Z 27 (B6)**; lb-brt-15 „§ 40 BRWO“ vermutlich § 40 ArbVG ❓; lb-bnd-37 verstümmeltes GlBG-Zitat ⚠; lb-bnd-38 § 15a/15b AVRAG-FN-Verschiebung ⚠; lb-mel-03 DSB-Frist 6 vs. 7 Monate **gelöst 2026-09-11: 6 Monate, „sieben“ = Tippfehler (B12)**; lb-ins-06 HBG-Jahresangaben **gelöst 2026-09-11: HBG-Relationen 2026, 1× 6.930/1,5× 10.395/2× 13.860, „2025“-Label falsch (B11)**; lb-bso-02 ALV- Ersatzquoten fehlen in der Quelle ❓ (bewusst offen) — vollständige Liste im RUNBOOK (Wissensbasis, Batch-8-Abschnitt). **Batch-9-Konflikte**: lb-sva-06 **gelöst 2026-09-11** — AK-Umlage 0,50 % DN + § 53a-Beitrag € 14,12/Monat (A7; RQ korrigiert); lb-sva-08 Weiterversicherung **gelöst** — freie-DN-Deckel € 8.085 (22,8 % × 8.085 = 1.843,38 exakt; A8); lb-bsv-12/13 BSVG-HBGL **gelöst** — GSVG/BSVG = 35 × Kalendertag-HBGL (2022: 6.615 · 2026: 8.085), „einheitlich“ falsch, ASVG separat § 108 Abs 3 (A8); lb-gsv-11 vs gsv-06 GF-Beteiligungsschwellen „50 %“ (2025-07) vs „>25 %/<25 %“ (2026-07) **gelöst 2026-09-11: 25 %-Schwelle gesetzlich (B7)**; lb-pvs-02 vs lb-swa-03 Regelpensionsalter-Stichtage **gelöst 2026-09-11** (lb-pvs-02 bestätigt § 617 Abs 11 idF BGBl I 2023/11; lb-swa-03 widerlegt; A10); lb-pvs-03/04/05 vs pvs-02 Altrecht-Grenzdatum **geklärt 2026-09-11** (1955 = Altrecht, 1954 = LZP-Kohorte; A10); lb-pvs-08 Bonus-Maximum € 481 vs € 493,99 ⚠ (A10-Rest, RIS); lb-kvs-03 „§ 120 Z 3 ASVG“ vermutlich Z 4 ⚠ — vollständige Liste im RUNBOOK (Wissensbasis, Batch-9-Abschnitt). DN-Beitragssätze 2026 und GFG/HBGL-Werte sind ✅ deckungsgleich mit RECHTSQUELLEN. - **General-AT GP0-Rest offen** (2026-09-10 nach Beschaffung): Pilotmandant/Golden-Master fehlt; D3-Anrechnungsmechanik vertraglich regeln (Bgld.- Auftragserteilung); Referenz-KV-Kuratierung (SI-2203/SI-2748, GP1, aus in-repo KV-Library); UGB-Buchungsmatrix (erste Referenz- buchhaltung); ELDA-/FinOnl-**Anmeldungen/Zertifikate** = Nutzer- seite; Abstimmung ELDA-Specs mit Bgld-AP0 (Doppelverwendung). Erledigt 2026-09-10: Volltexte AZG/AngG/ArbVG/LStR/alle KB-Abgleich- Normen beschafft; ELDA/eSV-Spec = DM-ORG 42.7.0 (JASV belegt); Krankengeldumlage als Falsch-Prämisse aufgelöst. Neu aus Plan- Neu aus Plan- Update: DZ/WKG-Grundsatzentscheidung (8.11) + WKG-Tarife RIS-verifizieren; KB-Konfliktfamilien vor GP3/GP4 — **A-Runde 2026-09-11 erledigt** (A1/A2/A5/A7/A8/A9 ✅; A4/A6/A10 ⚓; Details KB-KONFLIKTE A); **3. RIS-Runde 11.09.2026**: A6-Wortlaut ✅ (ALV-Entfall = **AlVG § 1 Abs 2 lit e** idF BGBl I 62/2026, NOR40280219, inkl. Korridorpension/Anwartschaft ab 2027; § 49 ASVG 2027 nur Telearbeitspauschale), A9-AZR ✅ (2025: 1.273,99 / 2026: 1.308,39, § 293 ASVG Anm. 2), A10-Altrecht ✅ (APG § 1 Abs 3: vor 1.1.1955), A4-Zitierstruktur ✅ (Art. 2 § 27 AlVG + Art. 7 § 82 Abs 7/8; 788–884 Wochen), A1-Zitierkorrektur ✅ (**Z 440 lit c** idF BGBl I 4/2026; „Z 476“ = Pendlerpauschale; Z 492/494 = § 68 Abs 1-Feiertagsregel), B16-Bezugszeitraum ✅; 8.12-**Restagenda**: A3 „Formel 7“ (wk-akt-11, blockiert AP4), A4-All-In (wk-akt-09), **A7-2026-GFG** (551,10 = 2025-Wert — Pauschale/DAG-Schwelle erst nach Fixierung; NSchAB- Beleg + DAG-Normzitat unverändert offen); KB-Scope-Kandidaten mit Pilotmandant entscheiden (8.13 inkl. Mutterschutz-/Karenz-Block). **Bgld-Schiene (fremdes Track, Nutzer-Review):** dortiger Prüfpunkt „Krankengeldumlage § 62" ist nach dem Privat-Track-Befund gegen denselben RIS-Stand zu verifizieren. - **KV-Library, manuell offen** (2026-09-09): manual_review-Listen im `kv-catalog.json` (Match-Heuristik-Flüchtigungen, 30 Datumsdifferenzen, 195 unklassifizierte Einzelträger-KVs); Kammer-Scan-PDFs (RA Vbg, LÄK NÖ/OÖ/Bgld) ohne OCR nicht maschinenlesbar; Angestelltenärzte-KV nirgends öffentlich. Bibliothek inkl. Texte committed als `5b629a5` (lokaler main, noch nicht gepusht). - **RQ-Privat ↔ Wissensbasis-Rechtsquellen-Abgleich (2026-09-10):** alle 571 KB-`legal_bases` (2.767 Zitat-Strings, ~130 Normwerke) gegen `RECHTSQUELLEN-Privat.md` geprüft. Gesetzesebene im RQ: 15 (EStG, ASVG, AZG, UrlG, AngG, ArbVG, BMSVG, FLAG, KommStG, AMPFG, IESG, LStR, BAG, BUAG/BFAK, ARG) + UGB nur als Matrix-Beschaffungspunkt; Rest bewusst außerhalb des sektoralen RQ-Scopes (SV-Parallelrechte, Arbeitnehmerschutz, Gesellschafts-/Verfahrensrecht …). **Echte, nirgends erfasste Lücken** (weder RQ noch RQ-Beschaffungs- liste noch Plan): **AVRAG** (§ 2g All-in-Grundlohn, § 11a Abs 4 Bildungsteilzeit-Aliquotierung — 124 KB-Zitate), **Mutterschutz-/ Karenz-Block** MSchG/MSchV/VKG/KBGG/APSG/FamZeitbG (Wochengeld = DG-Payroll-Berechnung — fehlende Scope-Entscheidung, auch Plan 8.13 nicht), **KommStG § 10** (Zerlegung mehrere Betriebsstätten), **EStG §§ 3/63/67a/69 + 124b Z 478 lit f** (§ 109a nur im Plan), **ASVG-Detailnormen-Block** §§ 11/33/34/41/471a/49 Abs 2–3/44 Abs 7/ 60/143/51/53b (im Plan punktuell via KB, RQ fehlt), **BAO §§ 4/29/30** (Betriebsstätte), **AÜG** (KommSt-Betriebsstätte Überlasser nach **UrlG § 7/§ 10a**, **BMSVG §§ 7/12/47**, **IESG § 12**, Lohnkontenverordnung 2006. **Erledigt 2026-09-10 (Nutzer-Freigabe):** RQ-Abschnitt 13 (Abgleichsmatrix) + Beschaffungslisten-Erweiterung + Plan-8.13-Ergänzung (Karenz-Block) umgesetzt — offen bleiben die RIS-Verifikationen der neuen Beschaffungspunkte (mit GP2/GP3/ GP4/GP7-Baubeginn) und die Scope-Entscheidungen (Mutterschutz-/ Karenz, Krankenstand-EFZ, Pfändung, DZ) mit dem Pilotmandanten. - gem360-seitig gilt: Branch `dev-payroll` dort vorerst erhalten, aber **keine Payroll-Implementierung mehr in gem360** und kein Merge nach dev/va_module (Guardrails im gem360-Handoff). Die Brücke `l10n_at_gemeinde_payroll_vrv` (AP7) wird in gem360 gegen getaggte Releases dieses Repos gebaut. - **Runtime-Validierung: GP1+GP2 grün; Core/GemBG blockiert** (2026-09-11): GP1-Abnahme erledigt — `test_kv_katalog` 8/8 grün auf `odoo_dev`; GP2 — `test_entgelt_private` 21/21 grün (29/29 gesamt). Kern/GemBG-Suiten nicht lauffähig: (a) `l10n_at_gemeinde_payroll` bricht beim Install ab — `payroll_structure_bgld.xml` L19 setzt `regular_pay` auf `hr.payroll.structure` (existiert in keinem Snapshot); (b) **zwei weitere Latenzfehler in den GemBG-Regeln** (erst runtime sichtbar, GP2-D4-Funde): ME/UEZ-Regeln teilen `work_time_rate` (Bruchteil 0..1!) durch 100 → Entgelt faktor 100 zu klein; NETTO-Regel nutzt `categories.X` statt `categories['X']` (DefaultDictPayroll ohne Attributzugriff) → safe_eval-Fehler. Fix-Paket im Bgld-Track nötig (regular_pay- Zeile entfernen, work_time_rate direkt multiplizieren, categories-Item-Zugriff), danach `createdb ` + `-i l10n_at_hr_payroll,l10n_at_gemeinde_payroll --test-tags /l10n_at_hr_payroll,/l10n_at_gemeinde_payroll` nachholen (Aufrufmuster README „Tests"). - Bgld.-Auftrag: AP0 offen (Bestandsaufnahme Pilotmandant, ELDA/FinOnl- Specs, VRV-Buchungsmatrix, offene RIS-Verifikationen) — `IMPLEMENTIERUNGSPLAN-Bgld.md` Abschnitt 8. - Odoo-Upgrades künftig in beiden Repos (gem360 + dieses) gegen denselben Odoo-Pin validieren. - **Audit ÖGK-Tarifgruppensystem (2026-09-12, Nutzer-Audit-Frage):** Um- fang nur „Normalbetriebe Allgemeiner Teil": mBGM-BSGR B001/B002 mit normativ korrekten T01 39,05 %/T02 37,55 % (gegen TASY-LSWH-Export 2026-07-01 verifiziert: KV 3,87/3,78, PV 10,25/12,55, AK 0,5 DN gilt für B001 **und** B002, Kern-Splitting stimmt); ERGB (E01 NSch, E02 SW, E03 Schulpflicht …) nie belegt — NSchAB läuft stattdessen über Company- Flag +3,80 % auf B001; nur 6 Abschläge (A01–A03/A09/A10/A15) von ~30 ÖGK-Handbuch-Abschlägen; keine Dienstgebergruppen-Konzept. **Zwei BSGR-Befunde vor Parametrisierung fixen:** (1) `_l10n_at_bsgr` mappt Lehrling+`arbeiter` auf **B044** — TASY: B044=Angestelltenlehrlinge, B045=Arbeiterlehrlinge → **invertiert** (BBER-Mapping in versicher- tenmeldung.py ist korrekt, D.39: 03=Arbeiterlehrling); (2) gering- fügig/fallweise immer **B030** (Gfg. Ang.), B010 (Gfg. Arb.) wird nie emittiert. Beide heute folgenlos (Lauf bricht ohne B044/B045/B010/ B030-Parameter listenweise ab), falsch sobald parametrisiert. TASY- Import mappt nur 3 BBB + 8 Tarifzweige (erweiterbares Mapping-Modell, kein BSGR/ERGB/Tarifgruppen-Import). Kein Code-Fix ohne Nutzer- Freigabe (Audit-only). ## Decisions & conventions - **RIS-Referenzquelle `.ris/`** (2026-09-13, Nutzer): der neue lokale Ordner `.ris/` ist ZUKUNFT die verbindliche Referenzquelle für Gesetzestexte und übernimmt die Rolle von `.additional_docs/ris_normtexte/` (2026-09-11) bzw. `.firecrawl/ris/` als Norm-Verifikationsbasis. Format: je Norm ein Markdown-Auszug mit den in der Lexis360-WKB zitierten Paragraphen (Kopf mit RIS-GesNr + GeltendeFassung-URL, je § Fundstelle + Inkrafttretensdatum + NormDokument-URL), tagesaktuelle Fassung, Abruf 2026-09-13; Bestand: ABGB, APSG, APflG, BMSVG, BS-V, BauV, DHG, FLAG, GmbHG, MSchG, MSchV, RStDG, Sachbezugswerteverordnung, StPO. **Auszug ≠ Volltext:** fehlt ein benötigter §, NICHT aus Trainingswerten ergänzen — Beschaffung (firecrawl-RIS-Download, findok-Regel) oder Nutzer-Beleg, Ablage in `.ris/`; gitignored wie die anderen D1-Quellordner. - **GP4-Konventionen (2026-09-11, Nutzer-freigegebener Bauplan +** **Quellenverifikation):** (1) **§ 2a AMPFG wirkt nur DN-seitig** (tiers+dn_voll im Parameter; Grenzen nicht aliquotieren; gilt auch für SZ-Beiträge; ab 2027 tiers=[] = voller Satz); (2) Gering- führigkeitsprüfung auf §-49-bereinigter laufender BG mit Hoch- rechnung ×30/Kalendertage bei untermonatiger Beschäftigung, ohne SZ, Lehrlinge nie geringfügig; (3) §-19a-Selbstversicherung ist KEIN Lohnabzug (Direct-Zahlung an den Träger) — Engine zeigt nur §-53a-Abs-1-UV (6,50 €) als DG-Zeile; (4) SVDN_SZ = eigene Abzugszeile (§ 67 Abs 12, Netto-Korrektur); (5) DG-/LNK-Zeilen in Kategorie ATP_DG ohne Nettoeffekt; (6) DZ nur bei Company-Flag `l10n_at_wk_mitglied`, Satzvektor je `l10n_at_bundesland` (WKO- Verifikation 8.11 offen); (7) Altersstichtage als DATUMS-Felder `l10n_at_*_ab` am Vertrag, Wirken je Beitragsmonat (Anspruchs- prinzip), UI GP8; (8) Beitragsmonat je Regel (`l10n_at_beitrags- monat`) + Lohnkontolinie (stored compute), historische Sätze/HBG je Gruppe; (9) §-49-Mengen = Arbeitstage über quantity; (10) DAG als Company-Bewertung `_l10n_at_dag(monat)` ohne Lohnzettelzeile (Ausweis GP8); (11) LNK-Freibetragsstaffel zentral `_at_lnk_basis` (Zufluss; §-67-Abs-3/6 über Kern-Flag `l10n_at_s67_abs`; lit f nur FLAF/DZ — KommSt ohne Befreiung). - **D4-Runtime-Mechanik Odoo 19 (GP2-Verifikationen 2026-09-11):** `hr.work.entry` ist **tageweise** (`date` + `duration` ≤ 24 h, kein datetime-Bereich; create braucht explizites `employee_id`); worked-days zählen **draft und validated** Entries; `hr.version`: `date_start/date_end` **computed** (aus `date_version` = max(date_version, contract_date_start); Versionen partitionieren die Zeit über `date_version`-Sequenz — create erzwingt heute, Änderung nur via `date_version`-Schreiben), Beschäftigungsspanne = `contract_date_start/end` (Payslip-Validierung „No running contract" prüft die); `work_time_rate` = **Bruchteil** (Version- kalender ÷ Firmenzalender, readonly — Teilzeit über kürzeren Kalender); Regel-localdict: `categories['CODE']` (DefaultDict, **kein** Attributzugriff), `rules['CODE'].total`, WET-Codes ≠ Regel-Codes (Payslip-Lines tragen Regel-Codes); `hr.payslip.name` required; WET/Regel-Kategorien brauchen `country_id` konsistent zur Structure. - **Primärquellen-Entscheidung SV-Beiträge** (2026-09-11, Nutzer): ÖGK-Beitragstarifsystem (`.additional_docs/oegk/`, lokal unversioniert, D1 analog `.lexis360/`) und der TASY-LSWH-Export (`personalverrechnung/quellen/TASY-LSWH-Export-20260324.xml`) sind verbindliche Primärquellen für Beitragssätze/Nebenbeiträge; bei Widerspruch zu Sekundärquellen (Briefings/WIKU) gelten sie. A1–A10-Lösungen in `KB-KONFLIKTE.md` Abschnitt A verankert; Layer-2-Einträge bleiben Beleg ohne Auflösungsvermerke (Nutzer- Entscheidung). RQ korrigiert: AK-Umlage 0,5 % DN, WF-Wien 1,5 % gesamt ab 1.1.2026, § 67 Abs 3 Günstiger-Prinzip. - **RIS-Normtexte als B-Runden-Primärquellen** (2026-09-11, Nutzer): `.additional_docs/ris_normtexte/` (Bundesrecht konsolidiert, tagesaktuelle Fassungen abgerufen 11.09.2026; Manifest `README_RIS_DOWNLOAD.md`, Auflösungsvorlage `B_KONFLIKTE_AUFLOESUNG.md`) sind die verbindliche Verifikationsbasis der B-Konfliktfamilien; lokale, unversionierte Ablage (`.additional_docs/` gitignored, Muster D1). B1–B18-Lösungen in `KB-KONFLIKTE.md` Abschnitt B verankert; Layer-2-Einträge bleiben Beleg ohne Auflösungsvermerke (wie A-Runde). Bei fehlenden Normtexten NICHT aus Trainingswerten ergänzen — Nutzer-Beleg anfordern (Ausnahme: EuGH-/BFG-Befunde via Webquellen dokumentiert). Volltexte zu § 8 Abs 12 EuroStUV und § 124b Z 494 EStG bewusst nicht geladen → LZP-/Bezugszeitraum-Details als Kleinverifikationen geführt (KB-KONFLIKTE „Nächste Schritte“). - **firecrawl-CLI + findok-Fassungsregel** (2026-09-11): CLI v1.23.3 als User-Prefix `~/.npm-global` (systemweiter npm-Install ohne Root nicht möglich; binary `~/.npm-global/bin/firecrawl`; keyless auth genügt für scrape). findok-Segment-URLs ohne Datumsparameter zeigen **Altfassungen** — aktuelle Fassung via `ilink`-URL mit `gueltig=` (Beweis Rz 243: 26. Fassung 18.12.2025); Details im RUNBOOK „Primärquellen-Downloads“. - **Lexis360-Wissensbasis-Architektur** (2026-09-10): D1 — Volltexte/ PDFs lokal unversioniert (`.lexis360/` gitignored, Muster `.firecrawl/`), nur Kuratierung versioniert (Lizenz LexisNexis). D2 — strukturelle Frontmatter-Keys englisch (wie kv-catalog/chambers), Werte deutsch (UTF-8); `stand` als Fachbegriff ISO `YYYY-MM`; `topic`/`tags` ASCII- Slugs; `topic` = beschreibender Cluster-Slug (`altersteilzeit`, `lehrlinge`, …), ID-Präfix (`atz`, …) nur im `id`. IDs `lb--` eingefroren (nie renummerieren/wiederverwenden); Frontmatter = Source of Truth, `kb.json`/`INDEX.md` generiert via `--registry`; Werte niemals aus Trainingswerten, nur aus Quelltext mit Stand-Kennzeichnung. Ablageort `.lexis360/` (dot-dir, lokal, unversioniert): vom Nutzer manuell exportierte lizenzierte Belege — bei Fehlen **NICHT** neu beschaffen (anders als `.firecrawl/` = agenten-rekonstruierbare Web-Fetches), sondern beim Nutzer nachfragen. - **WIKU-Quelle `.wiku/`** (2026-09-10): D1 analog (lokal, unversioniert, bei Fehlen NICHT beschaffen — Nutzer fragen). Integrationsmodell: **gemeinsamer Korpus** `personalverrechnung/wissensbasis/` (eine `kb.json`), `work`-Feld unterscheidet die Quellen; eigener ID-Raum `wk--` auf der bestehenden Cluster-Map (`wk-pfa-01` neben `lb-pfa-*`); Layer 1 `.wiku/md/` + eigener Katalog; Layer-2-Dateinamen mit Präfix `wiku_.md`; Stand aus „Stand YYYY-MM“/Heft-Monat, sonst Impressum; keine Lexis-Breadcrumbs — Metadaten aus Dateiname + Titelei. Granularität: 1 Publikation = 1 Eintrag (Casebook-/Artikel-Ebene optional später); cross_refs lb↔wk erwünscht. Pipeline = Multi-Source-**Erweiterung** von `build_lexis_kb.py`, kein Fork — Folgeaufgabe **nach Batch 7** (Lexis hat Priorität). - **General-AT D1–D4** (2026-09-09): Plan geführt als `personalverrechnung/IMPLEMENTIERUNGSPLAN-Privat.md`; Referenz-KVs R1 = SI-2203 + SI-2748 (Feinjustierung je Pilotmandant in GP0); **D3-Vorfinanzierung** — General-AT baut die sektor-neutralen Kern-Blöcke AP3/AP4 (und nötigenfalls AP5/AP6) in `l10n_at_hr_payroll` vor (Symmetrie zur Bgld-Planungsentscheidung „AP3 im Kern, damit das General-Produkt ihn erbt"); Anrechnung/Umlegung bei Bgld.- Auftragserteilung per Change-Request; D4 — Odoo-19-Source in-repo: seit 2026-09-11 `odoo_19.0+e.20260910/odoo-19.0+e.20260910/` (gemergter Community+Enterprise-Baum 19.0+e.20260910, 1.481 Addons, `.gitignore`; ersatzlos für `odoo/` + `odoo_enterprise/`); D4-Verifikation komplett erledigt (gegen 19.0.0 — gleiche relative Pfade; Neuzugänge gegen den neueren Snapshot zu Baubeginn verifizieren). - **GP0-Rechtskorrekturen General-AT (verbindlich)** (2026-09-09): 13./14. Bezüge = sonstige Bezüge iSd **§ 67 EStG** (§ 68 nur Zulagen/Zuschläge — „§ 68 Abs 5/6" war falsch); Urlaubsentgelt = **§ 6 UrlG** (§ 9 seit 2001 aufgehoben); EOSB = BMSVG-**Anwartschaft ohne Monatsentgelt-Staffel** (§ 14 Abs 2 Ausschlussmatrix, § 15 Auszahlung Beiträge + Erträge); Bgld-P9-Rechtsbasis damit § 67 (Detailauslegung LStR 2002 bleibt offen). - **KV-Quellen-Architektur** (2026-09-09): Main source je KV = die verantwortliche Arbeitgeberkammer; kollektivvertrag.at (ÖGB) immer als Crosscheck-Baseline (einziger vollständiger Korpus). WKO-DB deckt nur WKO-KVs ab (keine Arzt/Apotheke/RA/Notar/Land-Zweige). Lohntafel-PDFs nur verlinken, nicht downladen; im Text enthaltene Tabellen konvertieren. Historische Slices nur bei Bedarf (Default: aktuelle Version). - SKILL.md braucht YAML-Frontmatter (name = Verzeichnisname, description, disable-model-invocation). - Abhängigkeitsrichtung: gem360 → dieses Repo (nur die Brücke hängt an beiden), nie umgekehrt. - Tests nur auf Wegwerf-DB (nie `gem360_dev`); je Änderung py_compile + XML-Well-formedness-Check. - `.firecrawl/` bleibt lokal unversioniert (Rechts-Rohquellen); bei Fehlen neu beschaffen — niemals aus Trainingswerten arbeiten. - **Zed-Threads maschinenlokal** (2026-09-12): Threads liegen je Maschine in `~/.local/share/zed/threads/threads.db` (SQLite, journal=delete, `data_type='zstd'`); Remote-Sessions (Laptop→WS) schreiben nur clientseitig (verifiziert: Remote-Server hält DB nicht offen, laufender Laptop-Thread fehlt in WS-DB); kein Zed-Sync, kein `threads_path`-Setting in Zed 1.20. Laptop-Schema hat zusätzlich `worktree_branch` — Merge nutzt Spalten- Schnittmenge, der Wert wird auf WS-Seite verworfen. Konsolidierung = Stich-Sync, driftet sofort wieder. Merge Laptop→WS: scp der Laptop-DB → `/tmp/laptop-threads.db`, Backup `cp -a` der WS-DB, dann `sqlite3 ~/.local/share/zed/threads/threads.db "ATTACH '/tmp/laptop-threads.db' AS lp;" "INSERT OR REPLACE INTO main.threads (id, summary, updated_at, data_type, data, parent_id, folder_paths, folder_paths_order, created_at) SELECT l.id, l.summary, l.updated_at, l.data_type, l.data, l.parent_id, l.folder_paths, l.folder_paths_order, l.created_at FROM lp.threads l WHERE NOT EXISTS (SELECT 1 FROM main.threads t WHERE t.id = l.id AND t.updated_at > l.updated_at);" "DETACH lp;"` — WS-Zeile bleibt, wenn strikt neuer. Rückübertrag zur Laptop-DB per scp nur bei geschlossenem Laptop-Zed und vorherigem Re-Merge des finalen Laptop-Stands (sonst Verlust der Session-Enden). Neue Threads erscheinen im Agent-Panel erst nach Zed-Restart. **Auto-Sync installiert** (2026-09-12, Workstation-koordiniert): systemd- User-Timer `zed-threads-sync.timer` (10 min) → `~/.local/bin/zed-threads-sync.sh` (ssh-Alias `framework`): Wasserzeichen- Deltas je Richtung (1-h-Sicherheitsfenster), Guard `>=` (Zeile ersetzt nur bei strikt neuerem `updated_at` — idempotent, schont Laptop- `worktree_branch`), `busy_timeout=5000`, Integritätscheck je Delta, State/Log `~/.local/state/zed-threads-sync/`. Wartungshinweis: `strftime('%s', updated_at)` liefert TEXT — CAST AS INTEGER nötig, sonst matcht der Delta-Filter alle Zeilen (in Zyklus 1 passiert, harmlos dank Guard, behoben). Grenzen: Löschungen propagieren nicht, fremde Threads erst nach Zed-Restart sichtbar, Sync läuft nur bei bestehender WS-User- Session (Linger optional), Laptop offline = harmloser Skip. Die manuelle Finale-Sync-Checkliste ist damit obsolet. ## Files that matter right now - `personalverrechnung/PLAN-Restluecken-AP11.md` — **freigegebener** Ausbauplan Restlücken Wissensbasis↔Modul (AP11 Pfändung, AP12 Sachbezüge, AP13 Reise/Pendler, AP14 Endabrechnung, AP15 Abf Alt, AP16 Karenz-Reste, AP17 L17/§ 109a, AP18 Schwerarbeit, AP19 Status-Sonderfälle, AP20+ Optionen; AP8 parallel; Reihenfolge, Gates, PT-Summen; Status je Paket nachziehen) - `.firecrawl/ris/` — Primärquellen-Downloads (19 RIS-Gesetzestexte, LStR-2002-XML, DM-ORG 42.7.0 + Prüfkataloge + XSDs, SV-Werte 2026; Verzeichnis `_README.md` mit GesNr und Kurztitel-Fallen; lokal, unversioniert) — Beschaffungsstand RQ-Privat Abschn. 11; 2026-09-11 ergänzt: ASVG §§ 45/49, AlVG §§ 4/25/27/82, AMPFG §§ 1/2/3/25, APG § 5, findok-LStR Rz 243 aktuell (ilink-Methode) - `personalverrechnung/wissensbasis/` — Zwei-Quellen-Korpus (README, dokumente/ 601 Einträge = 571 Lexis + 30 WIKU, kb.json, INDEX.md; Batch-Workflow im RUNBOOK) - `personalverrechnung/KB-KONFLIKTE.md` — konsolidierte Übersicht der KB-Konflikte/offenen Punkte (A-Runde + 2. Verifikationsrunde in Abschnitt A: A1/A2/A5/A7/A8/A9 ✅, A4/A6/A10 ⚓, A3 ⚠ AP4-Blocker; B-Runde 2026-09-11 in Abschnitt B: 14 × ✅, B17 🔧, B3/B14/B18 ⚠ offen; C = Einzeloffenpunkte, D = Scope-Lücken, E = Prozess) - `.additional_docs/ris_normtexte/` — RIS-Normtexte der B-Lösungsrunde (SBV § 2/APflG §§ 4–6/GlBG § 12/BehG §§ 7e+7i/ArbVG § 97/EStG §§ 22/47/67/68/ASVG § 4/GSVG § 2/GKV § 0/AZG § 7/IESG § 1/EFZG § 2/ BSVG § 23/ABGB § 905, tagesaktuell 11.09.2026; lokal, unversioniert) + Auflösungsvorlage `B_KONFLIKTE_AUFLOESUNG.md` — Basis von KB-KONFLIKTE Abschnitt B - `.lexis360/` — lizenzierte PDF-Exporte + Layer-1-Volltexte `md/` + `_catalog.json` (lokal, unversioniert) - `personalverrechnung/tools/build_lexis_kb.py` — KB-Pipeline (Multi-Source: `--source lexis|wiku|all` für --extract/--check; --registry über beide Quellen; WIKU_PINS für neue WIKU-PDFs ergänzen) - `.agents/skills/wissensbasis/SKILL.md` — verbindliche Regeln für Wissensbasis-Arbeit (inkl. `.wiku/`-Integrationsmodell) - `.wiku/` — lizenzierte WIKU-Publikationen (lokal, unversioniert, gitignored; Batch 1 eingespielt — 30 Layer-2-Einträge wk-*) - `.additional_docs/` — Nutzer-Primärquellen der A-Lösungsrunde 2026-09-11 (ÖGK-Beitragstarifsystem `oegk/`, AMS-Merkblatt Altersteilzeitgeld, LStR-2002-Abschn. 19.3, ASVG-§-108/BSVG-§-23/ EO-§§-291a+292-Briefings, §-617-ASVG-Kompendium, PVA; lokal, unversioniert, gitignored) - `personalverrechnung/IMPLEMENTIERUNGSPLAN-Privat.md` — General-AT (freigegeben; GP0-Rechtsverifikationen erledigt, GP0-Rest offen; 2026-09-10 Wissensbasis-Anbindung in Abschnitt 2.1, neue Offenpunkte 8.11 DZ / 8.12 KB-Konflikte / 8.13 Scope-Kandidaten; D4-Protokoll in Abschnitt 2) - `personalverrechnung/RECHTSQUELLEN-Privat.md` — verbindliche Rechtslage General-AT (GP0-Inventar; Statusmarks ✅/⚠/❓) - `personalverrechnung/RUNBOOK.md` — KV-Library pflegen (Update-Zyklus) - `personalverrechnung/quellen/kv/kv-catalog.json|.csv` — der Crosscheck-Katalog - `personalverrechnung/quellen/kv/chambers/chambers.json` — Kammer-Quellen-Registry - `personalverrechnung/tools/fetch_kv_portal.py` / `fetch_wko_kv.py` / `build_kv_catalog.py` — Fetcher + Merge - `personalverrechnung/IMPLEMENTIERUNGSPLAN-Bgld.md` — AP3+ (Freigabe-Gate) - `personalverrechnung/RECHTSQUELLEN-Bgld.md` — verbindliche Rechtslage - `personalverrechnung/ANGEBOTS-KALKULATION-Bgld-Personalverrechnung.md` — AP-Rahmen, Prämissen P1–P10 - `odoo_19.0+e.20260910/odoo-19.0+e.20260910/` — Odoo-19-Quellen- Referenz (gemergter Community+Enterprise-Baum, 1.481 Addons; lokal, unversioniert; Aufruf `.venv/bin/python -m odoo`, Addons-Path `/odoo/addons,addons`) - `.venv/` — Python-3.14-venv mit editable install (lokal, unversioniert); Dev-DB `odoo_dev` (PostgreSQL lokal) - `addons/l10n_at_hr_payroll_private/` — General-AT (GP1 KV-Framework + Seed D2; GP2 Entgelt-Engine; GP3 LSt-Anbindung; GP4 SV/DB; GP5 Abfertigung Neu; **GP6 FI-Buchung UGB umgesetzt 2026-09-12** — `test_kv_katalog` 8 + `test_entgelt_private` 21 + `test_lst_private` 6 + `test_sv_private` 8 + `test_bv_private` 10 + `test_account_private` 4 + `test_meldewesen_private` 2 grün auf Wegwerf-DB (**94/94** gesamt mit Kern; `odoo_dev` noch auf GP4-Stand, Update nachholen); Rechenfall-Fixtures unter `docs/rechenfaelle/` inkl. buchhaltung.md + meldewesen.md; GP7 umgesetzt: mBGM/Versichertenmeldung/fallweise auf dem Kern-Framework; GP8 Jahreswechsel/UI/Fristen als Nächstes) - `addons/l10n_at_hr_payroll/` — Bundes-Kern (SV/TASY + GP3 Lohnsteuer + GP4 SV/DB + **GP7 ELDA/L16/Arbeitsstätte/Belege** 19.0.4.0.0 — `models/elda.py`, `lohnzettel_l16.py`, `kind.py`, `meldewesen.py`, `monatsreports.py`, `report/belege_reports.xml`; `test_elda_l16` 4) (DG/Geringfügigkeit/§ 49/Altersstichtage/§ 2a-Staffel/WF-Vektor/ Beitragsmonat/DAG), `rule_parameters_lst_2026.xml` + `rule_parameters_sv_2026.xml`; **74/74 grün**) - `addons/l10n_at_gemeinde_payroll/` — GemBG (AP1+AP2)