From 65eff08b32a0f00ff0f5e4bda3fe5793f631ed64 Mon Sep 17 00:00:00 2001
From: Matthias Andreas Benkard <code@mail.matthias.benkard.de>
Date: Sat, 18 Jul 2026 12:24:32 +0200
Subject: =?UTF-8?q?Support=20Bavarian=20state=20law=20(BayJG)=20with=20Art?=
 =?UTF-8?q?./=C2=A7=20inversion=20and=20superscripts?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Extend ÄndGgner from federal-only to Bavarian state law. Bavarian base
laws are structured in Artikel while their amending acts are structured
in Paragraphen (inverted from the Bund); official sentence numbers and
footnote markers are carried as Unicode superscripts (¹²³, ⁶)).

- Generalise Stelle.Paragraph to carry a sigil ("§" or "Art.") and route
  it through recogniser, applier and resolver (bit-identical Bund output).
- Superscript pipeline: geometric detection in FontgroessenFilter
  (SuperskriptModus BEHALTEN), Superskript util, exact sentence splitting
  in SatzTeiler, label-based sentence resolution.
- BayRechtLoader/BayRechtTextParser for gesetze-bayern.de PDF/plaintext.
- §-structured amending acts, GVBl/Landtag column titles, non-breaking
  spaces, the GVBl continuation quote; Bavarian command forms (footnote
  aufhebung, Satznummerierung streichung, Wortlaut forms, Halbsatz,
  gapping chains).

Acceptance (EndToEndTest.bayJgGvblAcceptance): the pre-2026 BayJG
fassung (BayJG-alt.txt, reconstructed from Wayback single-article
snapshots) with GVBl 6/2026 §§ 1-2 applied — 154 commands, 0 unknown,
149 applied automatically, 5 pinned residuals (follow-up edits inside
two multi-step renumbering sequences in Art. 29a and Art. 56).

Application-side fixes surfaced by the acceptance run (all Bund-safe):
sentence-start superscript before §; sentence boundaries = {0} ∪ {each
number ≥ 2}; gapping scope inheritance for bare word operations;
footnote definition lines hidden from word operations; absatz aufhebung
marks "(weggefallen)" keeping its number, and absatz renumbering
overwrites an empty placeholder (weggefallen/gegenstandslos) target.

211 tests green (mvnw verify); federal reference numbers unchanged.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Change-Id: Iebae4c17ca90755c5fd36251362042f3d5796fd0
---
 README.adoc | 26 ++++++++++++++++++++++++--
 1 file changed, 24 insertions(+), 2 deletions(-)

(limited to 'README.adoc')

diff --git a/README.adoc b/README.adoc
index 1ba4343..d785371 100644
--- a/README.adoc
+++ b/README.adoc
@@ -60,9 +60,15 @@ wortweise hervorgehoben).
 
 Eingaben:
 
-* Stammgesetz: XML im gii-norm-Format von
+* Stammgesetz (Bundesrecht): XML im gii-norm-Format von
   https://www.gesetze-im-internet.de/[gesetze-im-internet.de]
-* Änderungsgesetz: BGBl-PDF oder Klartext
+* Stammgesetz (Landesrecht Bayern): konsolidierte Fassung von
+  https://www.gesetze-bayern.de/[gesetze-bayern.de] als PDF oder als
+  kanonischer Klartext im Format der `--extract-only`-Ausgabe; amtliche
+  Satznummern und Fußnotenmarker stehen als Unicode-Superskripte im
+  Text („¹Die freilebende Tierwelt …“, „Enteignung⁶)“)
+* Änderungsgesetz: BGBl-, GVBl- oder Drucksachen-PDF (Bundestag,
+  Bundesrat, Bayerischer Landtag) oder Klartext
 
 [source,shell script]
 ----
@@ -112,6 +118,22 @@ unsicher bleibt — etwa Befehle gegen eine ältere Gesetzesfassung, deren
 Zieltext nicht mehr existiert — landet mit Begründung im Abschnitt
 *Manuell prüfen* der Synopse und wird niemals stillschweigend verworfen.
 
+Für das bayerische Landesrecht versteht ÄndGgner die dortigen
+Konventionen: Stammgesetze gliedern sich in Artikel („Art. 6 Abs. 2
+Satz 1 Nr. 2“, durchgängig abgekürzt zitiert), Änderungsgesetze dagegen
+in Paragraphen — auch mehrere Gesetze in einem GVBl-Heft, aus denen die
+auf das Stammgesetz zielenden §§ (einschließlich „Weitere Änderung“)
+anhand des Einleitungssatzes ausgewählt werden. Amtliche Satznummern
+bleiben als Superskripte erhalten und dienen als exakte Satzgrenzen;
+zusätzlich erkannt werden die bayerischen Befehlsformen („Fußnote 1
+wird aufgehoben“, „In Satz 1 wird die Satznummerierung „1“ gestrichen“,
+„Dem Wortlaut werden die folgenden Abs. 1 bis 4 vorangestellt“, „Der
+bisherige Wortlaut wird Abs. 5“, Halbsatz-Ziele, Klauselketten mit
+gemeinsamem Schlussverb) sowie das Fortführungszeichen des GVBl (jedes
+neugefasste Aufzählungsglied öffnet erneut mit „). Meta-Änderungen an
+Drucksachen (Änderungsanträge des Landtags) sind bewusst noch nicht
+abgedeckt.
+
 
 == Running the Tests
 
-- 
cgit v1.2.1

