Files
odoo-at-payroll/.agents/MEMORY.md
T
fegger 9add58fe83 [IMP] l10n_at_hr_payroll_private: add statutory old-system severance (AP15-A)
Pay the pre-2003 AngG severance from the end-of-employment run as its own neutral benefit line: free of SV (§ 49 Abs 3 Z 7 ASVG) and payroll levies, outside the annual sixth, and collected into the § 291d EO termination pot net of its own wage tax. Taxation follows the binding better-of rule of § 67 Abs 3 EStG: multiple-of-method (tariff wage tax on the running monthly wage × the statutory multiple of the payout) versus the flat 6 % rate, applied mandatorily in favour of the employee. The tariff wage tax is captured as a separately confirmed value instead of deriving it from gross pay through the § 62 engine. The wizard enforces § 23a Abs 3 AngG (parental exit needs five uninterrupted years), blocks BMSVG-new contracts except frozen claims and validates AGRD 02/06 against the claim type. The LNK basis subtracts § 67 Abs 3/6 rules only when they actually run in the tax base, the L16 generator reports LST_ABF in key 260 outside 210/220, and result_rules access in the garnishment paths avoids DefaultDictPayroll materialisation. Verified against the original statute texts in .ris/ (AngG §§ 23/23a, EStG § 67 Abs 3).

Version 19.0.13.0.0 (private), 19.0.9.0.0 (core)
2026-09-15 11:01:55 +02:00

114 KiB
Raw Blame History

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, >3545 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 4144/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 (05), 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 AP0AP10-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 AP0AP10-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; Σ AP11AP19 ≈ 90142 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 2ad + 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.
  • AP2ad 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). AP1l10n_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 — GP1GP9 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 GP1GP9 abgeschlossen (M8 final). Optionen: AP10 (Testing/Parallellauf) als Folgeauftrag.

GP8 Jahreswechsel/Fristen/Retro umgesetzt und grün (100/100 Tests) — General-AT GP1GP8 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. GP1GP8 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 0104, 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 + <function>-Datendatei für Bestands-Companies — der ERSTE <value> 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 600619 Löhne, 620639 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: <function> 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 (788884 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_katalog29/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 (GP2GP4-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, GP1GP9 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. GP1GP8 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 (<function>-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') + <function>-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 ∈ [Start12M, 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.md84/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-L1L8).

  • 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 226, UE_NACHT_FRUEH 2022, UE_SOFEI(_NACHT), MEHR_VZ(_NACHT) § 4a, MEHR_TZ(NACHT) § 19d; €-Flag l10n_at_nacht_sv auf 226-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 IIVI/M1/M2/M2FS/M3; 2748 IVI/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 225 vs. § 12b 226 (⚠ 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 A1A10 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 10701079c 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 (GP2GP4-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 20272028, 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 B1B18 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,140 = 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-<prefix>-<nn> 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_<slug>.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-Abbruchpayroll_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/ 912/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 (§§ 912) 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 225/197, 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 12 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.24.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_<code>): 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 ≈ 120172 PT, inkl. D3-Vorfinanzung ≈ 180258 PT (M1M9, ~79 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-0103 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 726 vs. Z 727 gelöst 2026-09-11: Z 7Z 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; 788884 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 23/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 <testdb> + -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 (A01A03/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. A1A10-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). B1B18-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=<JJJJMMTT> (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-<prefix>-<nn> 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-<prefix>-<nn> auf der bestehenden Cluster-Map (wk-pfa-01 neben lb-pfa-*); Layer 1 .wiku/md/ + eigener Katalog; Layer-2-Dateinamen mit Präfix wiku_<slug>.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 D1D4 (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.mdfreigegebener 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 §§ 46/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 P1P10

  • 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 <baum>/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-12test_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)