From 7235b34eeb6ff331c152116cbe4df846d7476110 Mon Sep 17 00:00:00 2001 From: Matthias Andreas Benkard Date: Fri, 14 Aug 2026 18:58:25 +0200 Subject: =?UTF-8?q?Quellformate=20jenseits=20des=20verk=C3=BCndeten=20Gese?= =?UTF-8?q?tzes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bisher nahm ÄndGgner nur verkündete Artikelgesetze und Gesetzentwürfe an, ohne den Unterschied zu kennen. Dokumente, die einen Entwurf ändern statt ein Gesetz, lieferten still null Befehle. Neu: * Dokumentart-Erkennung aus dem Rohtext (DokumentErkenner, DokumentArt, DokumentKopf) — vor der Bereinigung, weil gerade die Drucksachenköpfe als Kolumnentitel wegfallen. Erkannt wird nie am Dateinamen: Die Beispieldaten enthalten eine Datei namens Beschlussempfehlung, die in Wahrheit ein Entschließungsantrag ist. Dokumente ohne Befehle erzeugen jetzt eine benannte Warnung statt stiller Leere. * Änderungsanträge (AenderungsantragParser, EntwurfsPatcher): Der Antrag wird auf den Entwurfstext angewandt, der geänderte Entwurf danach wie gewohnt auf das Stammgesetz — eine komponierte Synopse. Drucksachen- und Gesetzesstellen bleiben getrennte Typen; die Zuordnung Antrag→Entwurf läuft über die Drucksachennummer, nicht über die Argumentreihenfolge. Der 1910 Zeilen große BefehlAnwender bleibt unberührt. * Beschlussempfehlungen werden erkannt und mit Begründung übergangen, die den brauchbaren Entwurf beim Namen nennt. Die Spaltentrennung der Zusammenstellung ist gebaut (FontgroessenFilter.Spalte, koordinatenbasiert am Steg) und belegt: Die linke Spalte ergibt Befehl für Befehl den Regierungsentwurf. Die rechte Spalte bleibt bewusst offen — sie vermerkt „unverändert“ auch zeilenweise innerhalb zitierter Blöcke, ihre Anführungszeichen gehen daher nicht auf; nötig ist die zeilenweise Zuordnung beider Spalten über die gemeinsame Grundlinie. Die Synopse kennzeichnet eine Entwurfsfassung als solche. 296 Tests grün (vorher 269); alle gepinnten Akzeptanzzahlen unverändert. Co-Authored-By: Claude Opus 5 Change-Id: I0001d25fcbd9969fc06eea675edc4326ce2e02f9 --- README.adoc | 101 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 96 insertions(+), 5 deletions(-) (limited to 'README.adoc') diff --git a/README.adoc b/README.adoc index b092904..a29b7ac 100644 --- a/README.adoc +++ b/README.adoc @@ -72,8 +72,11 @@ Eingaben: bleiben, ergibt sich aus der geladenen Stammfassung, nicht aus einer Länderkennung. Ebenso folgt das Zitiersigel (§ oder Art.) aus den Normköpfen der Stammfassung. -* Änderungsgesetz: BGBl-, GVBl- oder Drucksachen-PDF (Bundestag, - Bundesrat, Landtage) oder Klartext +* Änderungsdokument: BGBl-, GVBl- oder Drucksachen-PDF (Bundestag, + Bundesrat, Landtage) oder Klartext. Die Dokumentart wird aus dem Text + erschlossen, nicht aus dem Dateinamen (siehe <>); + Änderungsanträge dürfen zusammen mit dem Entwurf angegeben werden, den + sie ändern. [source,shell script] ---- @@ -158,9 +161,7 @@ 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. +neugefasste Aufzählungsglied öffnet erneut mit „). Die übrigen Länder gliedern ihre Stammgesetze wie der Bund in Paragraphen; die Unterschiede liegen im Gesetzblatt-Satz und in @@ -178,6 +179,96 @@ Stammfassungen woher stammen und was noch offen ist, verzeichnet `src/main/resources/sampledata/Landesrecht-Beispiele.adoc`. +[[quellformate]] +== Quellformate: Gesetz, Entwurf, Antrag + +Ein Änderungsbefehl steht nicht nur im verkündeten Gesetzblatt. Dasselbe +Vorhaben durchläuft als Referenten-, Regierungs- und Fraktionsentwurf, +als Änderungsantrag und als Beschlussempfehlung mehrere Fassungen, und +die Frage „was gälte, wenn das durchkommt?“ stellt sich in jeder davon. +ÄndGgner erschließt die Art eines Dokuments deshalb aus seinem Kopf — +nie aus dem Dateinamen, der lügen kann (im Beispielkorpus heißt ein +Entschließungsantrag `BT-Drs-21-7071_Beschlussempfehlung.pdf`) und nie +aus einer Kennung, die von außen mitzugeben wäre. + +Unterschieden werden: + +Änderungsgesetz:: + Das verkündete Artikelgesetz aus BGBl, GVBl oder GVOBl. Der Regelfall. +Gesetzentwurf:: + Referenten-, Regierungs- und Fraktionsentwürfe, auch als Drucksache von + Bundestag, Bundesrat oder Landtag. Der Begründungsteil hinter dem + Regelungstext erzeugt keine Befehle; erkannt wird er an „Begründung“ + ebenso wie an den Entwurfsvarianten („A. Allgemeiner Teil“, „Zu + Artikel 1“). +Änderungsantrag:: + Ändert nicht das Stammgesetz, sondern eine *Drucksache* — siehe unten. +Beschlussempfehlung:: + Trägt ihre Fassung in einer zweispaltigen Zusammenstellung. Erkannt, + aber noch nicht angewandt (siehe unten). +Dokument ohne Änderungsbefehle:: + Entschließungs- und schlichter Antrag, Plenarprotokoll, Bericht. Sie + werden übergangen und gemeldet — nicht stillschweigend zu null + Befehlen verarbeitet. + +Sobald ein Entwurf, ein Antrag oder eine Beschlussempfehlung beteiligt +ist, trägt die Synopse den Hinweis *Entwurfsfassung — nicht geltendes +Recht*; die Quellenzeile nennt je Datei die erkannte Art. + +=== Änderungsanträge + +Ein Änderungsantrag ist eine Meta-Änderung: Er ändert den Entwurf, nicht +das Gesetz. Sein Rahmensatz adressiert deshalb zwei Ebenen zugleich — +„In § 3 Nr. 22 wird § 18 Nr. 1 wie folgt geändert:“ nennt erst die +Stelle _in der Drucksache_ (den 22. Änderungsbefehl ihres dritten +Paragraphen) und dann die Stelle _in dem Text, den dieser Befehl +zitiert_. Angegeben wird der Antrag zusammen mit seinem Entwurf: + +[source,shell script] +---- +java -jar target/aendggner-0.1.0-SNAPSHOT.jar \ + BayJG-alt.txt Ltg-Drs-19-9707_Gesetzentwurf.pdf \ + Ltg-Drs-19-10365_Aenderungsantrag-Gruene.pdf -o synopse.html +---- + +ÄndGgner wendet dann erst den Antrag auf den Entwurf an und danach den +so geänderten Entwurf auf das Stammgesetz; die Synopse zeigt also, was +gälte, wenn Entwurf _und_ Antrag durchkämen. Welcher Entwurf gemeint +ist, entscheidet die Drucksachennummer, die der Antrag selbst nennt +(„(Drs. 19/9707)“), nicht die Reihenfolge der Argumente. Fehlt der +Entwurf, bleibt der Antrag unangewandt und wird gemeldet — ihn +ersatzweise auf das Stammgesetz loszulassen wäre falsch, denn seine +Stellenangaben zielen auf die Drucksache. Erkannt wird auch die +elliptische Antragsform, die das Hilfsverb nur einmal in der +Beschlussformel führt („1. In Nr. 1.29 die Angabe „,“ am Ende durch die +Angabe „;“ ersetzt.“). + +=== Beschlussempfehlungen: erkannt, noch nicht angewandt + +Die maßgebliche Fassung einer Beschlussempfehlung steht in einer +zweispaltigen Zusammenstellung: links der Entwurf, rechts die Beschlüsse +des Ausschusses. Die Spaltentrennung ist erledigt und belegt — anders +als beim alten BGBl und beim Berliner GVBl stehen die Spalten *nicht* +nacheinander im Inhaltsstrom, sondern zeilenweise verschränkt, weshalb +sie erstmals koordinatenbasiert getrennt werden (`PatchTextExtraktor. +extrahiereSpalten`, Schnitt an der Blattmitte, aber nur an einem +tatsächlichen Spaltensteg, damit ganzseitenbreite Zeilen ungeschnitten +bleiben). Der Akzeptanztest hält fest, dass die linke Spalte Befehl für +Befehl den Regierungsentwurf ergibt, aus dem die Zusammenstellung gebaut +ist. + +Was fehlt, ist die Auflösung der rechten Spalte. Sie druckt Unverändertes +nicht ab, sondern vermerkt bloß „unverändert“ — und zwar nicht nur je +Gliederungspunkt, sondern auch zeilenweise innerhalb zitierter Blöcke. +Dadurch ist die rechte Spalte für sich genommen kein vollständiges +Dokument: Ihre Anführungszeichen gehen nicht auf. Eine Auflösung über +Gliederungspfade allein scheitert daran nachweislich; nötig ist die +zeilenweise Zuordnung beider Spalten über ihre gemeinsame Grundlinie im +PDF. Bis dahin wird eine Beschlussempfehlung erkannt und mit Begründung +übergangen — samt Hinweis auf die Drucksachennummer des Entwurfs, der +sich stattdessen eignet. Eine halb aufgelöste Fassung auszugeben wäre +schlimmer als keine. + [[web]] == Web-App -- cgit v1.2.1