Third Lexis 360 intake (44 briefings, source Stands 2025-06 to
2026-08), extending the corpus to 151 curated entries in 19 clusters.
All batch-3 topics sit in the 'Entgelt: Anspruch & Abrechnung'
chapter - this is the most payroll-core batch so far (SZ tariff
mechanics, surcharges, commuter allowances, travel expenses, BMSVG).
- 6 new clusters: reisekosten (9), pendlerforderung (9),
vorsorgeleistungen (11), zuschlage (8), sonderzahlungen (4),
geschenke (2); plus lb-ent-11 (Ausbildungskosten-Rueckerstattung)
appended to the entgelt cluster
- two URL-encoded export filenames (%c3%9f = sharp-s) normalized
before intake
- cross-batch reconciliation: lb-prm-04's dangling reference to
'Sonderzahlungen - Steuer' resolved against the new lb-son-04
(and lb-son-03 for the SV side); cross_refs updated
- curated entries cross-checked against the verified legal inventory
(RECHTSQUELLEN-Privat.md): 67-EStG staffel, 68-EStG free limits,
BMSVG core values confirmed; deviations flagged, notably the
124b-Ueberstundenmassnahme 2026 citation in lb-zus-07 - the
briefing cites 'Z 440 lit c'/'BGBl I 4/2026' while the verified text
is Z 476 lit c idgF BGBl I 43/2026 (Aufrollung bis 30. 9. 2026),
and lb-ent-01's blanket 120 EUR for 68 Abs 2 (verified: 170 EUR
2026)
- further flagged points: lb-pen-09 table value 3,672 EUR (likely
print error, arithmetic 2,448), PendlerVO-vs-BMF-FAQ divergence
(lb-pen-01), 183-day rule Finanz vs UFS (rei), teleworker trips
Finanz vs BFG/VwGH (lb-rei-07), SV status of staff participation
foundations (lb-vor-01), customer gifts without SV value limit
(lb-ges-02)
- batch-4 candidates updated in the RUNBOOK (Abfertigung Alt,
Corona-Kurzarbeit u. a.); README cluster table extended to
batches 1-3
Validated: --registry 151 entries/19 clusters, --check 0 problems,
structural scan over all 151 curated docs, py_compile.
Second Lexis 360 intake (52 briefings, source Stands 2025-06 to
2026-08), extending the corpus to 107 curated entries in 13 clusters.
Covers the second briefings chapter 'Entgelt: Anspruch & Abrechnung'
and further Beschaeftigungsverhaeltnisse topics.
- 7 new clusters: behinderte (4), entgelt (10), geschaftsfuehrer (5),
leitende-angestellte (1), pramien (6), sachbezuege (21), vorstand
(4); plus lb-leh-16 (Weiterbeschaftigung nach Ende der Lehrzeit)
appended to the frozen lehrlinge sequence
- tool hardening: batch values validated as integers 1..N (multi-batch
operation), dynamic batch labels in kb.json (batches summary) and
INDEX header, and a new --extract warning when a frozen id's prefix
no longer matches its cluster - this caught the lb-jug-08 fossil from
the unpinned first pass, corrected to lb-sac-21 before any curation
referenced it
- removed one duplicate browser export (geschaftsfuhrer_arbeitsrecht
(1).pdf, identical extracted text)
- corpus conflicts and open points flagged in the entries: Klein-
wohnungsgrenzen lb-sac-09 vs lb-sac-10, Pensionisten-Beguenstigung
lb-sac-02 (LStR Rz 104 divergence), EUR 14.53 Parkplatz without
SV/LSt categorization in the source (lb-sac-18), incentive trips
only at LStR-Rz level (lb-sac-16), simplified 6% tariff in lb-prm-04
(the verified 67-EStG staffel in RECHTSQUELLEN-Privat.md governs)
- dangling briefing references recorded as batch-3 candidates in the
RUNBOOK (Bildungskarenz, Telearbeitspauschale, Personalrabatte bis
2015, Lohnzettel/BGN u. a.)
- README cluster table extended to batches 1-2; RUNBOOK/MEMORY updated
Validated: --registry 107 entries/13 clusters, --check 0 problems,
structural scan over all 107 curated docs, py_compile.
Move the licensed PDF exports and the Layer-1 full texts from the
project root into the dot directory .lexis360/, keeping the root
listing to versioned content plus the tool checkouts.
The location also encodes provenance, distinct from .firecrawl/:
.lexis360/ holds user-supplied licensed exports that cannot be
re-fetched by an agent - if missing, stop and ask the user
(documented in MEMORY), whereas .firecrawl/ remains the home of
reconstructible web fetches.
- plain move of the unversioned directory (batch2/ subfolder spotted
and left untouched for its own intake run)
- .gitignore, tool constants/messages, source.pdf/source.text
frontmatter paths of all 55 curated entries, README/RUNBOOK/MEMORY
mentions; kb.json/INDEX.md regenerated
- batch 2 (53 PDFs) recorded in MEMORY as staged in .lexis360/batch2/
Validated end to end: --extract 55/55 with stable ids, --registry
55 entries/6 clusters, --check 0 problems (every frontmatter path
resolves at the new location), no stale path references remain.
Batch-1 handoff: current focus, completed work, open points
(flagged corpus contradictions to verify against RIS, copilot
delivery path for the licensed layer-1 texts) and the KB
architecture decisions (licensing split, frontmatter conventions,
frozen lb-* ids).
Curated knowledge base from the first batch of Lexis 360 PDF exports
(LexisNexis "Lexis Briefings Personalrecht", 55 documents, source
Stands 2024-03 to 2026-09). Purpose: development reference alongside
RECHTSQUELLEN-*.md and a retrieval-ready corpus for a future
question-answering copilot.
Licensing split (decision D1): the PDF exports and the extracted full
texts stay local and unversioned (Lexis360/ gitignored, like
.firecrawl/); only the curation in own words with short quotes and
source citations is versioned.
- wissensbasis/dokumente/: one curated entry per briefing (55) with
approved frontmatter (frozen lb-<cluster>-<nn> ids, English
structural keys, German values, stand YYYY-MM, ASCII topic/tags
slugs) and sections Zusammenfassung, Kernwerte & Fristen (Stand
marked), Rechtsgrundlagen (only citations actually in the source,
verified/plausible/open marks), Payroll-Relevanz (Odoo), Verweise
- clusters: altersteilzeit 15, lehrlinge 15, jugendliche 7,
ferialpraktikanten 4, beschaftigungsformen 8, teilzeit 6
- kb.json + INDEX.md: generated from the frontmatter by --registry
(single source of truth, schema-validated)
- tools/build_lexis_kb.py: stdlib-only pipeline - --extract
(pdftotext, breadcrumb/stand parsing incl. dossier-style exports
with wrapped breadcrumbs), --registry (frontmatter validation:
required keys, id pattern, id prefix vs topic, stand format,
dangling cross_refs), --check (layer 1 <-> layer 2 completeness);
ids are frozen across batches, numbers never reused
- RUNBOOK.md: batch intake workflow, validation steps, known
limitations
Corpus contradictions flagged in the entries (not silently resolved):
AMS replacement rate for blocked Altersteilzeit 2026 (lb-atz-07 28.5%
vs lb-atz-09/12 27.5%), DAG limit 2023 (751.36 vs 751.37 EUR),
Kurzarbeit for Lehrlinge (lb-leh-11 vs lb-leh-07); lehrlinge cluster
partly older Stands (2024-03/2025-08).
Validated: extract 55/55, registry 55 entries/6 clusters, check 0
problems, structural scan of all 55 curated entries, py_compile.
GP1 of the approved General-AT implementation plan: the KV
framework for the Austrian private economy on the Odoo 19
hr_payroll engine.
- l10n.at.payroll.kv: collective agreement master data with chamber,
union, validity date and a trace link to the KV library
(personalverrechnung/quellen/kv/)
- l10n.at.payroll.kv.wert: versioned KV parameters following the
hr.rule.parameter.value pattern (Python literal, unique per
KV/code/date); consumed via employee.kv_id._wert(code, date)
- l10n.at.payroll.kv.gruppe / .stufe: Verwendungsgruppen with
Erfahrungsstufen year tables, unique(gruppe, stufe, gueltig_ab),
Stichtag lookup
- hr.version / hr.employee contract fields: kv_id, kv_gruppe_id,
erfahrungsstufe, ueberzahlung
- import wizard for KV intake and yearly updates: table paste
(Gruppe;Stufe;Gehalt[;Bezeichnung]), preview, >10% jump warning
(warn lines never applied automatically), new gueltig_ab versions,
historical values untouched
- seed D2 (SI-2203 Handwerk und Gewerbe, SI-2748 Metallgewerbe):
wage tables from 1. 1. 2026 curated from the KV library texts -
18 groups, 131 stage values, 27 parameters, including the special
progression groups IV-M / V-OM (SI-2748) and the discontinued
VG I (SI-2203)
- tests: test_kv_katalog (seed lookups, Stichtag behaviour,
versioning, parameters, wizard, contract fields)
Statically validated (py_compile, XML well-formedness, CSV
consistency, wizard logic simulation); runtime acceptance pending
PostgreSQL on the dev host.
Ignore the local, unversioned Odoo 19 checkouts: odoo/
(Community tree with odoo-bin) and odoo_enterprise/odoo (merged
enterprise tree with community and enterprise addons). Document both
in the README Entwicklung section, including the resulting test
addons path (odoo_enterprise/odoo/addons,addons). Also point the
module table row at the approved General-AT plan.
Approved implementation plan for l10n_at_hr_payroll_private (M0,
decisions D1-D4) and the GP0 legal-source inventory
RECHTSQUELLEN-Privat.md, verified against primary sources (RIS,
jusline):
- FLAF-DB § 41 FLAG: 3.7% for 2026, 2.7% from 2028 (GesNr 10008220);
KommStG 1993: 3% (GesNr 10004841)
- 13th/14th salary taxation runs via § 67 EStG (Jahressechstel fixed
rates, control sixth § 77 Abs 4a); § 68 covers allowances/surcharges
only - plan citation corrected, also fixes the legal basis of the
Bgld open point P9
- Urlaubsentgelt is § 6 UrlG (§ 9 repealed since 2001) - corrected
- EOSB: no Monatsentgelt staffel; § 15 BMSVG pays out the Anwartschaft
with § 14 Abs 2 Verfügungsausschluss matrix - GP5 design confirmed
- 2026 overtime measure: first 15 hours, max 170 €/month
(§ 124b Z 476 lit c BGBl I 43/2026)
Plan section 8 items 3-6 and UrlG (8) marked verified; private module
skeleton README, MEMORY, CHANGELOG and payroll skill updated (§ 67
citation fix, RECHTSQUELLEN-Privat.md as required source).
Cross-checked catalogue of all currently valid Austrian collective
agreements, per the source policy: main source = the responsible
employer-side chamber, kollektivvertrag.at (OEGB-Verlag) as complete
cross-check baseline.
- oegb/: 593 variants from kollektivvertrag.at with full consolidated
texts (JSON primary format, Markdown for review/diff) plus
catalog.json/.csv; fetched via the portal's JSON servlets
(dashboard/structure/slices/topics), resumable
- wko/: 614 current documents from the WKO KV database (1,820 branch
overviews across 10 regions) with texts and catalog; match-report
against the baseline: 407 pairs, 30 date disagreements flagged
- chambers/chambers.json: curated registry of chamber-side sources and
publication gaps (GOeD member-only, RA/Notariat not public, OCR-less
scan PDFs, missing hospital-doctors KV)
- kv-catalog.json/.csv: merged catalogue, 768 entries, chamber
classification, main_source, cross_check status, manual_review lists
- tools/fetch_kv_portal.py / fetch_wko_kv.py / build_kv_catalog.py:
stdlib-only fetchers and merge step, each with a --refresh diff mode
- RUNBOOK.md: update cycle for keeping the library current (annual,
tied to the Wartung rhythm and KV rounds)
Lohntafel PDFs are linked but not downloaded; wage tables contained in
the KV texts are converted. No Odoo module changes.
Analyse des ÖGK-TASY-Exports (Stichtag 2026-07-01, 5 MB): tarife/tarifsets/
tarifgruppen/beschaeftigtengruppen-Kette mit DN/DG-Anteilen je Zweig
(KV/PV/AV/UV/IE/DG/AK/WF/BV), bbwerte in Cent mit Gültigkeit; verifizierte
Deckung mit dem SV-Werte-Report 2026 (GFG 551,10 EUR, HBG SZ 13.860 EUR,
KV 3,87/3,78, AV 2,95/2,95). Plan: hr.rule.parameter bleibt alleiniger
Wertespeicher (Engine-Mechanik, Konsum via payslip._rule_parameter);
Seed 2026 per Generator mit Herkunftsnachweis + jährlicher
TASY-Import-Wizard (stichtagsbasierte Auflösung über die Gruppenkette,
Preview-Differenz mit Plausibilitätswarnung, explizite Bestätigung) +
Mapping-Tabelle TASY-Code/Zweig -> Parameter. Nicht in TASY: öffentlicher
FLAF-DB (§ 49a Abs 8/9, AP0/RIS), Lohnsteuer, KommSt. Offene Punkte
(HBG x30-Konvention, AMPFG-Staffelauflösung, Commit der 5-MB-Quelldatei)
im Plan dokumentiert; Freigabe-Antrag gestellt.
Katalogmodell nach Implementierungsplan AP1 (freigegeben 2026-09-09):
- ``gemeinde.payroll.entlohnungsgruppe`` (Code, Schema, §, Bundesland,
Vorrückungszeitraum je Gruppe; § 66 Abs 2 GemBG: 4 Jahre, abweichend
2 Jahre für Betreuungspersonen-/Sondergruppen) und
``gemeinde.payroll.entlohnungsstufe`` (Stufe, Monatsentgelt, Stichtag,
unique je Gruppe/Stufe/Stichtag) mit Stichtags-Lookup-Helfern.
- Seed 2026: 35 Entlohnungsgruppen, 433 Werte (Schemata I/gv, II/gh,
Ia/bv, IIa/bh, kb, av sowie §-Gruppen 150c/151/151c), Werte aus der
konsolidierten GemBG-Fassung 09.09.2026 (Wert 1.7.2026 gemäß Artikel 4
RV 0715/XXIII. GP; 2025er-Stichtagsannahme für nicht 2026 angepasste
Tabellen als AP0-Verifikationspunkt dokumentiert). Generator mit
Herkunftsnachweis: personalverrechnung/tools/extract_gembg_katalog.py.
- GemBG-Felder auf der Payroll-Version (hr.version) plus Employee-Spiegel
nach dem Engine-Muster (related/inherited): Entlohnungsgruppe, Stufe,
Besoldungsdienstalter, Vorrückungstermin — berechnet nach § 66 Abs 2
(erster Tag des Monats nach Vollendung weiterer n Jahre BDA), manuell
überschreibbar für Überleitungsfälle (§§ 157a ff).
- Vorrückungs-Wizard (§ 66 Abs 2): fällige Versionen zum Stichtag,
Stufenerhöhung mit Höchststufen-Schutz und Ergebnis-Notification —
bewusst kein stilles Mutieren im Lohnlauf (Dokumentationspflicht).
- Views/Menüs (Personalverrechnung Bgld. unter Payroll), Security auf
hr_payroll-Gruppen, Employee-Form-Anbindung in payroll_group.
- Tests (Rechenfälle AP1): Seed-Werte inkl. Quellenanomalie kb1a/6,
Stichtags-Lookup, Jahresversionierung, Vorrückungstermin (BDA 15.03.2020
-> 1.4.2028), Wizard-Anwendung mit Höchststufen-Skip.
Statische Validierung grün (py_compile, XML, Manifest, CSV-Integrität);
Runtime-Testlauf auf dem Dev-Host (gem360_dev) ausständig, wie im
Implementierungsplan M2 vorgesehen.
Modulgerüst für die Gemeinde-Personalverrechnung (Bgld. GemBG 2014) auf der
Odoo-19-hr_payroll-Engine: Manifest mit Depends auf hr_payroll,
hr_payroll_account und l10n_at_vrv2015 (VRV-Buchungsintegration gemäß
Implementierungsplan AP7) sowie leeres models-Paket mit Verweis auf die
Projektdokumentation. Strukturen, Regeln, Katalogdaten und Tests folgen dem
freigegebenen Implementierungsplan (personalverrechnung/, payroll-Skill).
60-PLAN-payroll-bgld.md liegt nun als personalverrechnung/PLAN-payroll-bgld.md
neben RECHTSQUELLEN-Bgld.md und der Angebotskalkulation; Dokumentverweise in
beiden Projekt-Dokumenten mitgeändert (Rename, Inhalt unverändert).
Aufwandsschätzung und Materialsammlungs-Plan für die
Gemeinde-Personalverrechnung (Burgenland zuerst): Variante A (volle
Lohnverrechnung in Odoo, ~250–420 PT über drei Releases) vs. Variante B
(Import-Schnittstelle zur externen Lohnverrechnung, ~25–40 PT, deckungsgleich
mit der harten Scope-Ausnahme in 50-SCOPE-module.md), Bund-vs.-Land-Split
der Bausteine, Architektur-Vorgaben (hr_payroll-Engine, rule parameters,
Bundesland-Datentrennung), Research-Checkliste (KV-Gehaltskatalog Bgld.,
LGBG, ELDA/FinOnl-Specs, 12 Referenz-Lohnläufe der Pilotgemeinde) und offene
Entscheidungen (KBBG-Kindergartenpersonal, Statutarstadt Rust,
Meldewesen-Betrieb, Scope-Ausnahme).