Commit Graph

6 Commits

Author SHA1 Message Date
fegger 3a5337e24b [ADD] personalverrechnung: Lexis360 knowledge base (Batch 5)
Fifth Lexis 360 intake (31 briefings, source Stands 2025-12 to
2026-07), extending the corpus to 236 curated entries in 33 clusters.
This batch opens the third briefings chapter 'Arbeitszeit' (AZG
working-time law, the structural backbone for Work-Entry-based
payroll).

- 8 new clusters: arbeitszeitgrenzen (4), arbeitszeitmodelle (7,
  incl. Kurzarbeit and Gleitzeit/Schicht), meldepflichten (4),
  nachtschwerarbeit (3), ruhezeiten (4), schwangerschaft (1),
  uberstunden (4), zeiterfassung (3); plus lb-jug-08 appended to
  the jugendliche cluster
- one URL-encoded export filename (sharp-s) normalized; no
  duplicates; no fossil ids this time - the specific-first keyword
  ordering held
- cross-batch reconciliation: three procurement gaps closed and
  back-referenced - 'Jugendliche - Arbeitszeit' (lb-jug-04 and
  lb-jug-05 -> lb-jug-08) and 'Aufzeichnungspflicht, Formen der
  Zeiterfassung' (lb-jug-05 -> lb-zer-01/02)
- RECHTSQUELLEN cross-checks: 68-EStG overtime free limits 2026
  (15 UStd/170 EUR) confirmed via lb-zus-07; the Kurzarbeit/
  Lehrlinge corpus conflict is now triangulated - lb-azm-05
  (2026-07) sides with lb-leh-07 (apprentices excluded since
  2023) against lb-leh-11's '100%'
- flagged batch-5 points: NSchG contribution 2026 (3.8%) cited
  without BGBl evidence (lb-nsc-01), 'para 7 Abs 1' vs 'Abs 6 AZG'
  citation divergence for the overtime refusal right
  (lb-ues-01/04), MAV-START EU conflict (lb-rhz-03), KAB-Richtlinie
  computing the 39.05% partial amount with outdated SV rates
  (lb-azm-06), 12-Abs-2a-vs-12a designation conflict (lb-zer-01)
- batch-6 candidates updated in the RUNBOOK (Entgeltfortzahlung an
  Feiertagen, Motivkuendigung, Gefahrenevaluierung u. a.);
  README cluster table extended to batches 1-5 incl. the third
  chapter

Validated: --registry 236 entries/33 clusters, --check 0 problems,
structural scan over all 236 curated docs, py_compile.
2026-09-10 11:49:51 +02:00
fegger 0d60308858 [ADD] personalverrechnung: Lexis360 knowledge base (Batch 4)
Fourth Lexis 360 intake (54 briefings after removing one identical
re-download, source Stands 2026-06 to 2026-08), extending the corpus
to 205 curated entries in 25 clusters. Focus of this batch: the
enforcement and employer-contribution side of payroll (all in the
'Entgelt: Anspruch & Abrechnung' chapter).

- 6 new clusters: lohndumping (13, LSD-BG incl. Sicherungsmittel and
  cross-border posting), lohnpfandung (14, EO garnishment mechanics),
  gplb (7), lohnnebenkosten (7, FLAF-DB/DZ/IESG/AK-Umlage/WBF/KommSt),
  lohnverrechnung (9, L16/Lohnzettel, mBGM, 109a, Aufrollung,
  Aufrechnung, Darlehen), nachzahlungen (4)
- cross-batch reconciliation: 'Darlehen und Vorschuesse'
  (lb-sac-13 -> lb-lvr-02) and 'Lohnzettel und Beitragsgrundlagen-
  nachweis' (lb-sac-21 -> lb-lvr-05) dangling references closed,
  cross_refs updated
- tool hardening: assign_ids returns mismatch warnings instead of
  appending to an out-of-scope variable (latent NameError that only
  fired when a mismatch actually occurred), keyword fallback
  reordered specific-before-generic (batch-4 lesson: generic
  'zuschlag' stole iesg_zuschlag before the topic map was pinned),
  7 fossil ids from the unpinned pass purged and reassigned
- RECHTSQUELLEN cross-checks (lnk cluster): FLAF-DB 3.7%, KommSt 3%,
  IESG 0.10%, WBF (other provinces 1%), Freibetrag staffel confirmed;
  flagged: lb-lnk-02 states the DB Freibetrag condition INVERTED vs
  the verified text (correct staffel evidenced via lb-lnk-03),
  lb-lnk-05 WBF Wien 1.5% vs 1.0% (RIS clarification needed), plus
  pfa Grundbetrag naming conflict (lb-pfa-03/05), Existenzminimum 2022
  (500/515 EUR, lb-pfa-12/14), mutilated statute citation in
  lb-lsd-13 (RIS check), 124b citation variants in the corpus
  (Z 440/Z 449 vs verified Z 476 lit c idgF BGBl I 43/2026)
- batch-5 candidates updated in the RUNBOOK (pfändungsrechtliche
  Behandlung von Sonderzahlungen, Rueckzahlung von Darlehen u. a.);
  README cluster table extended to batches 1-4

Validated: --registry 205 entries/25 clusters, --check 0 problems,
structural scan over all 205 curated docs, py_compile.
2026-09-10 11:34:37 +02:00
fegger 2cc6be7832 [ADD] personalverrechnung: Lexis360 knowledge base (Batch 3)
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.
2026-09-10 11:08:26 +02:00
fegger fe3b09c4e2 [ADD] personalverrechnung: Lexis360 knowledge base (Batch 2)
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.
2026-09-10 10:50:20 +02:00
fegger e990488273 [REF] personalverrechnung: relocate Lexis360 raw layer to .lexis360/
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.
2026-09-10 10:27:12 +02:00
fegger 6a78b419ed [ADD] personalverrechnung: Lexis360 knowledge base (Batch 1)
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.
2026-09-10 10:23:46 +02:00