blob: 9f17e99d442bdfd7372a6e0db9dfd10f196380e6 [file] [log] [blame]
╔══════════════════════════════════════════════════════════════════════════════╗
║ ║
║ V E R Z E I C H N I S D E R F A S S U N G E N ║
║ des Softwareerzeugnisses „ÄndGgner“ ║
║ (Werkzeug zur Erstellung von Synopsen für Änderungsgesetze) ║
║ ║
╚══════════════════════════════════════════════════════════════════════════════╝
Vorbemerkung zur Führung dieses Verzeichnisses
──────────────────────────────────────────────
(1) Dieses Verzeichnis dokumentiert nach Maßgabe der nachstehenden Bestimmungen
den jeweiligen Stand des Quelltextes des vorbezeichneten Erzeugnisses.
(2) Für jeden Kalendertag, an dem Änderungen am Quelltext vorgenommen werden, ist
ein gesonderter Abschnitt nach dem Muster der nachfolgenden Fassungen anzu-
legen; die Abschnitte sind in absteigender zeitlicher Reihenfolge (jüngste
Fassung zuerst) zu führen.
(3) Die Änderungen sind in sachlich gegliederter Form, unter fortlaufender
Nummerierung und unter Angabe der betroffenen Bestandteile (Klassen, Dateien)
zu bezeichnen. Maßgeblich ist die im Handbuch der Rechtsförmlichkeit nieder-
gelegte Ausdrucksweise entsprechend.
════════════════════════════════════════════════════════════════════════════════
Fassung vom 31. August 2026,
zuletzt geändert durch die am 31. August 2026 vorgenommenen Änderungen
════════════════════════════════════════════════════════════════════════════════
Die Prüfung nach § 17 des Handbuchs läuft fortan selbsttätig: Ein Arbeitsablauf
für GitHub Actions baut und prüft bei jedem Push und bei jedem Pull Request
(Artikel 1). Das Handbuch weist dies aus (Artikel 2).
Artikel 1
Selbsttätige Prüfung
Es wird der Arbeitsablauf „.github/workflows/ci.yml“ eingeführt. Er wird
ausgelöst durch Push nach „master“, durch jeden Pull Request und auf Anforderung
von Hand (workflow_dispatch); für denselben Verweis wird jeweils nur der jüngste
Lauf zu Ende geführt (concurrency). Ihm sind allein Leserechte erteilt.
(1) Der Lauf „pruefung“ baut und prüft auf einem Temurin-JDK der Fassung 25 mit
„./mvnw verify“. Damit sind neben den Einzel- und Akzeptanzprüfungen auch der
Korpuslauf (§ 6d), der Formatierer (Spotless) und die Mindestfassung des
Bauwerkzeugs (Enforcer) erfaßt, weil beide an die Phase „verify“ gebunden
sind. Die ausführbare Archivdatei nebst „target/libs“ wird als Artefakt
aufbewahrt, die Surefire-Berichte allein im Fehlerfall.
(2) Der Lauf „browserfassung“ stellt die Browserfassung mit „./mvnw -Pwasm
package -DskipTests“ her. Er richtet hierfür Oracle GraalVM ein
(graalvm/setup-graalvm, „distribution: graalvm“); die Community Edition
trägt Web Image nicht (§ 14 Absatz 5). Vorab wird Binaryen eingerichtet,
damit „deploy/webpaket.sh“ die Nachoptimierung durch wasm-opt tatsächlich
vornimmt und die Grenze von 25 MiB an dem mißt, was ausgeliefert würde;
ohne Binaryen bliebe es bei einer bloßen Warnung. Das Verzeichnis
„target/web“ wird als Artefakt aufbewahrt. Die Tests bleiben hier
ausgesetzt; sie laufen im Lauf nach Absatz 1.
(3) Der Lauf „lizenzauszeichnung“ prüft die Auszeichnung nach der
REUSE-Spezifikation (fsfe/reuse-action) und entspricht damit dem bisher von
Hand geführten „reuse lint“ (§ 16).
Die drei Läufe hängen nicht voneinander ab. Nachzuladen ist nichts: Der
Beispielkorpus liegt im Repository und ist nur von „git archive“ ausgenommen.
Artikel 2
Fortschreibung des Handbuchs
§ 17 des Handbuchs (README.md) erhält die Absätze 4 und 5. Absatz 4 bezeichnet
den Arbeitsablauf, seine drei Läufe und die Aufbewahrung der Artefakte; Absatz 5
nennt die Voraussetzung des Wasm-Laufes (Oracle GraalVM) und stellt klar, daß der
Beispielkorpus nicht nachzuladen ist.
════════════════════════════════════════════════════════════════════════════════
Fassung vom 29. August 2026 (zweite Fassung des Tages),
zuletzt geändert durch die am 29. August 2026 vorgenommenen Änderungen
════════════════════════════════════════════════════════════════════════════════
Die kanonische Web-Adresse der Browserfassung lautet fortan
aendggner.kellertomaten.de (Artikel 1). Das Ergebnis des Vordrucks öffnet sich
beim Absenden unmittelbar in einem neuen Reiter (Artikel 2).
Artikel 1
Kanonische Web-Adresse
Die Browserfassung wird unter der Domäne aendggner.kellertomaten.de betrieben.
Die Angabe des kanonischen Verweises in index.html, das Handbuch (README.md) und
die Konfigurationsvorlage (deploy/nginx-aendggner.conf) sind entsprechend
angepasst.
Artikel 2
Unmittelbare Öffnung der Synopse
Nach dem Absenden des Vordrucks und abgeschlossener Berechnung öffnet das Skript
(app.js) das berechnete Ergebnis unmittelbar in einem neuen Browser-Reiter
(window.open). Der Verweis unter „Verfügung der Zentralstelle“ bleibt als
Hilfsmittel und für etwaige Zusatzdateien unverändert erhalten.
════════════════════════════════════════════════════════════════════════════════
Fassung vom 29. August 2026,
zuletzt geändert durch die am 29. August 2026 vorgenommenen Änderungen
════════════════════════════════════════════════════════════════════════════════
Der Vordruck weist fortan aus, welchen Standes er ist, und nennt neben der
bisherigen Bezugsquelle eine zweite (Artikel 1 bis 3). Ferner schließt sich der
Länderkreis: Mit dem Saarland und mit Sachsen-Anhalt sind alle sechzehn Länder
erfaßt (Artikel 4 und 5).
Artikel 1
Zweite Bezugsquelle des Quelltextes
Die Fußzeile der Startseite und der Hinweis im Impressum verwiesen bislang allein
auf die eigene Git-Stelle. Das Spiegelbild auf GitHub ist dem allgemeinen Publikum
geläufiger und tritt neben sie.
(1) In der Fußzeile der Startseite (index.html) folgt dem Git-Link, durch einen
Mittelpunkt getrennt, ein Link auf https://github.com/benkard/aendggner.
(2) Im Impressum wird der Satz über den fortlaufenden Bezug entsprechend erweitert
(„über Git oder GitHub“).
(3) Die Datenschutzseite bleibt unberührt; sie führte keine solche Angabe.
Artikel 2
Die Startseite nennt ihren Stand
Unter dem Titel des Vordrucks stand bisher nur die Bezeichnung der Stelle; welchen
Standes die betriebene Fassung ist, war der Seite nicht zu entnehmen. Die
handgeführte Ausgabebezeichnung in der Fußzeile („08.26“) trifft dazu keine
tagesgenaue Aussage.
(1) Zwischen Überschrift und Stellenangabe tritt die Zeile „in der Fassung vom …“
nebst einem <time>-Element, das das Datum sowohl maschinenlesbar als auch im
deutschen Fließtext führt. Das Stilblatt erhält dazu die Regel „.fassung“ nach
dem Vorbild von „.stelle“.
(2) Das im Quelltext stehende Datum ist der Rückfall für den Fall, daß die Seite
ohne das Paketierskript angesehen wird; ausgeliefert wird stets das Datum des
gebauten Standes.
Artikel 3
Einsetzen des Datums beim Paketieren
Damit die Angabe nicht stillschweigend veraltet, setzt sie das Paketierskript
(deploy/webpaket.sh) beim Bau ein. Es läuft ohnehin nach dem Kopieren der
statischen Seiten und kennt den gebauten Stand bereits.
(1) Als vierter Schritt tritt das Fassungsdatum hinzu. Es stammt aus „git log -1
--format=%cs“ und wird ohne date(1) in die deutsche Langform gebracht: Jahr,
Monat und Tag werden durch Parameterexpansion zerlegt, der Monatsname über eine
Fallunterscheidung gewonnen, die führende Null des Tages gestrichen. Grund ist
die Uneinigkeit von BSD und GNU über die Schalter von date(1).
(2) Ersetzt wird die gesamte <time>-Einheit; geschrieben wird in eine Nebendatei
und sodann umbenannt, weil „sed -i“ nicht überall gleich lautet.
(3) Findet sich die Marke nicht, bricht der Bau ab. Eine falsch datierte Fassung
auszuliefern wäre schlimmer als ein fehlgeschlagener Bau.
(4) Der Fassungsnachweis im Paket (quelltext-fassung.txt) führt das Datum künftig
neben dem Commit.
Die Prüfung geht auf: „sh -n“ beanstandet nichts; ein Trockenlauf auf einer Kopie
der Seiten setzt „28. August 2026“ ein, was dem Stand von HEAD entspricht; wird die
Marke entfernt, bricht das Skript mit der vorgesehenen Meldung ab (Rückgabe 1);
„reuse lint“ weist 214 von 214 Dateien als vollständig ausgezeichnet aus.
Artikel 4
Der Länderkreis schließt sich
Mit dem Saarland und mit Sachsen-Anhalt sind nunmehr alle sechzehn Länder erfaßt.
Beide Landesrechtsportale führen keine Fassungsliste; für das Saarland hilft die
Änderungshistorie aus, für Sachsen-Anhalt bleibt es beim rheinland-pfälzischen
Weg.
(1) Saarland (sampledata/Saarland/). Beigelegt sind das Gesetz Nr. 2211 zur
Änderung des Gesetzes über den Saarlandpakt (Amtsbl. I 2026 Nr. 31 S. 756)
sowie Vor- und Nachfassung beider Stammwerke — des Gesetzes (SPaktG) und der
Verordnung zu seiner Ausführung (AusfSPaktGVO). Ein Heft, zwei Stammwerke, je
ein Auftrag.
(2) Die Vorfassungen sind der Änderungshistorie des Portals entnommen, die für das
Jahr 2026 je genau eine Änderung ausweist, und aus den Gesetzblättern von 2019,
2020 und 2024 Norm für Norm gegengeprüft: Die Ursprungsfassung nebst den beiden
zwischenzeitlichen Änderungen ergibt genau die heutige Gesamtausgabe. Das
Nähere liegt in Saarland/SOURCES nieder.
(3) Sachsen-Anhalt (sampledata/SachsenAnhalt/). Das Gesetz- und Verordnungsblatt
des Landes ist nicht frei; abrufbar sind allein die Inhaltsverzeichnisse der
letzten Hefte. Das Änderungsdokument ist deshalb die Drucksache 8/6357 des
Landtags (Entwurf eines Zweiten Gesetzes zur Änderung des Fischereigesetzes),
der Stamm die aktuelle Gesamtausgabe des Fischereigesetzes. Aussagekräftig ist
allein die Zahl der erschlossenen Befehle.
(4) Die Auftragsliste (korpus.tsv) erhält die drei Aufträge SL-SPaktG,
SL-AusfSPaktGVO und ST-FischG nebst den erläuternden Vorbemerkungen; die
Grundlinie ist fortgeschrieben. Das Handbuch (§ 13 Absätze 4b bis 4d) und die
Übersicht der Landesrecht-Beispiele sind entsprechend ergänzt.
Artikel 5
Fünf allgemeine Funde aus den beiden Ländern
(1) Der Kolumnentitel des Amtsblattes des Saarlandes steht im Inhaltsstrom und
klebt an der Seitenzahl; er wird wie die Kolumnentitel der übrigen Blätter
herausgeschnitten (TextBereiniger.ABL_SL_KOPF).
(2) Die Aufzählungsmarke am Anfang einer Einheit ist deren Kennzeichnung und nicht
ihr Wortlaut. Wer „in Nummer 8 den Punkt durch ein Komma ersetzt“, meint den
Schlußpunkt und nicht den Punkt der Marke; bislang stand der Punkt zweimal da
und der Befehl blieb als mehrdeutig liegen. Die Textoperationen sehen die Marke
nicht mehr (BefehlAnwender.ohneAufzaehlungsmarke). Die Absatzbezeichnung „(1)“
bleibt unangetastet; sie ist anderswo geregelt.
(3) Die Artikelwahl streicht aus dem Vorspann die Wendung „zur Ausführung des
X-Gesetzes“, damit ein Ausführungstitel nicht für das Stammgesetz gehalten
wird. Ist das Ziel aber selbst eine solche Verordnung, so stünde nach dem
Streichen gerade ihr eigener Name nicht mehr da, und kein Artikel würde
gewählt. Die Streichung unterbleibt daher in diesem Fall
(AenderungsgesetzParser.betrifft).
(4) Die Wortfuge am markerlosen Umbruch. Im engen Zweispaltensatz verliert der
Auszug auch an einer echten Wortgrenze den Zwischenraum („zusätzlich“ +
„jahresbezogene“). Entschieden wird das wie beim Trennstrich am Wortbestand des
Dokuments — und zwar an demjenigen ohne die zeilenletzten Wörter, denn ein
abgerissenes Bruchstück steht immer am Zeilenende, ein wirkliches Wort auch
mitten in der Zeile (TextBereiniger.warFuge). Ein Kopf von weniger als vier
Zeichen bleibt ausgenommen: Er ist von einer Vorsilbe nicht zu unterscheiden
(„aus“ + „geschlossen“ gegen „zu“ + „ergreifen“), und geraten wird nicht.
(5) Die Buchstabengliederung mit Punkt („a.“) und die kleinen römischen Zahlen
(„i.“, „ii.“) treten neben die Klammerformen (GliederungsScanner). „i.“ ist
zweideutig — als Buchstabe die neunte, als Zahl die erste Marke — und wird aus
dem Stand der Gliederung entschieden. Mehrbuchstabige Marken mit Punkt gibt es
nur als römische Zahl; „vgl.“ und dergleichen sind keine Gliederung. Dazu
kommen die Nebenform „erhält die Fassung“ und der wahlfreie Doppelpunkt vor dem
Zitat (BefehlErkenner).
Schlußbestimmung zu den Artikeln 4 und 5
Die vorstehenden Änderungen sind durch die Prüfung sämtlicher Testfälle
(vierhundertsechsundfünfzig an der Zahl) sowie durch die vollständige Erstellung
(mvnw verify) bestätigt worden; „reuse lint“ weist 223 von 223 Dateien als
vollständig ausgezeichnet aus. Der Korpuslauf umfaßt fortan vierunddreißig
Aufträge mit 1429 Befehlen, davon 1295 angewandt, und 661 von 671 gleichen Normen.
Nicht selbsttätig verarbeitbar bleiben die auslassende Anfügung („Als Abs. 2 neu
angefügt“), die Anfügung an die Überschrift des Werkes selbst, der Verbund aus
Bereichsumnummerierung und Wortstreichung sowie die kurze Wortfuge; sie sind im
Handbuch und in den Herkunftsnachweisen als Grenzen benannt.
════════════════════════════════════════════════════════════════════════════════
Fassung vom 28. August 2026 (dritte Fassung des Tages),
zuletzt geändert durch die am 28. August 2026 vorgenommenen Änderungen
════════════════════════════════════════════════════════════════════════════════
Der Korpuslauf hat seine erste Frucht getragen, und zwar eine unerwartete: Unter
den einhundertsechzehn liegengebliebenen Befehlen des Korpus ist kein einziger
ein Tabellenproblem. Die Annahme, die Anlagen des mecklenburgischen Falles
scheiterten an fehlender Tabellenunterstützung, war unrichtig. Beschafft man das
Ursprungsheft, so zeigt sich: Der Ausbildungsrahmenplan (Anlage 1) ist keine
Tabelle, sondern gegliederter Fließtext — je Abschnitt eine Kopfzeile, die
Ausbildungsstelle, die Dauer und eine Spiegelstrichliste. Er fehlte in der
Stammfassung, das war alles. Zwei der vier Reste sind damit erledigt.
Artikel 1
Die benannte Einheit einer Anlage
(1) Eine Anlage gliedert sich nach eigener Wahl. Neben den Nummern eines
Zuständigkeitskatalogs erkennt der Leser (LandesRechtTextParser) fortan die
benannte Einheit und führt sie als eigene Norm, deren Bezeichnung die Anlage
voranstellt („Anlage 1 Ausbildungsabschnitt 1“). Der Ausgeber
(LandesRechtTextAusgeber) schreibt sie ebenso zurück; der Rundlauf geht auf.
(2) Erkannt wird die Einheit an ihrem Bau und nicht an einer Wortliste: verlangt
sind Buchstaben vor dem Wortstamm. „Ausbildungsabschnitt“ trifft, „Abschnitt“
nicht — und „Unterabschnitt“ ebenso wenig, obwohl er auf denselben Stamm
endet; er gliedert das Gesetz.
(3) Der Stellenparser (StellenParser) nimmt die Einheit als Stellenangabe („Im
Ausbildungsabschnitt 1 …“), die Stelle (Stelle) unterscheidet sie von der
echten Gliederung, und der Auflöser (StellenAufloeser) setzt sie mit der
Anlage zur Normbezeichnung zusammen — ebenso, wie er es mit deren Nummern
tut.
(4) Der Anwender (BefehlAnwender) benennt eine solche Norm um („Der bisherige
Ausbildungsabschnitt 5 wird zu Ausbildungsabschnitt 6“). Die Anlage nimmt er
dabei aus dem Bestand und nicht aus dem Befehl: Dieser nennt nur die Einheit.
Zuvor lief die Umnummerierung in den Auffangzweig „keine Textänderung nötig“
und meldete Erfolg, ohne etwas zu tun — ein stiller Fehler, den erst der
Belegfall zutage gefördert hat.
Artikel 2
Die Beispieldaten
(1) Die mecklenburgische Stammfassung führt fortan die Anlage 1. Sie stammt aus
dem Ursprungsheft GVOBl. M-V 2016 Nr. 12, das über das Internet-Archiv
beschafft worden ist; der Wirt regierung-mv.de antwortet einer Skriptabfrage
nicht. Die Herkunft ist in „MecklenburgVorpommern/SOURCES“ nachgewiesen.
(2) Die Anlage 2 (Vordruck des Befähigungsberichts) bleibt fort. Sie ist der
einzige echte Tabellensatz des ganzen Beispielkorpus, und der einzige auf sie
zielende Befehl ersetzt sie ohnehin durch eine Fassung, die im Anhang des
ändernden Gesetzes steht und nicht vorliegt.
(3) Der Akzeptanzfall pinnt fortan 35 statt 29 Normen und 22 statt 20 angewandte
Befehle. Von den beiden Resten fügt der eine einen ganzen
Ausbildungsabschnitt ein — eine neue Norm innerhalb einer Anlage setzt das
Erzeugnis nicht —, der andere verweist auf den fehlenden Anhang.
Artikel 3
Was die Grundlinie geleistet hat
Die Erweiterung hat einen Befehl gekostet, der zuvor angewandt wurde: „Die
Überschrift zu Unterabschnitt 4 wird gestrichen“ des GEG-Entwurfs fiel aus dem
Gliederungszweig, weil auch „Unterabschnitt“ auf den Wortstamm endet. Der
Korpuslauf hat das im selben Durchgang gerügt („angewandte Befehle 86 statt 87“),
und zwar bevor eine Einzelprüfung davon etwas gemerkt hätte — keine hätte das,
denn der Fall steht in einem anderen Land und einem anderen Dokument. Die Grenze
ist gezogen und durch zwei Prüffälle (StellenParserTest) gepinnt.
Schlussbestimmung
Die vorstehenden Änderungen sind durch die vollständige Prüfung (mvnw verify,
vierhundertfünfundvierzig Testfälle) und durch die Lizenzprüfung (reuse lint,
zweihundertvierzehn von zweihundertvierzehn Dateien) bestätigt worden. Die
Grundlinie des Korpuslaufs ist fortgeschrieben: 1289 statt 1287 angewandter
Befehle.
════════════════════════════════════════════════════════════════════════════════
Fassung vom 28. August 2026 (zweite Fassung des Tages),
zuletzt geändert durch die am 28. August 2026 vorgenommenen Änderungen
════════════════════════════════════════════════════════════════════════════════
Der Befund über das Erzeugnis ruhte bislang auf handverlesenen Fällen. Rund drei
Dutzend Akzeptanzprüfungen sagen, dass diese Hefte aufgehen; sie sagen nicht,
woran die Reste im Ganzen liegen, und die Auszählung der Gründe blieb auf den
einzelnen Lauf beschränkt. Der Massenlauf beantwortet das für den Korpus: eine
Zeile Kennzahlen je Heft, und, eingecheckt, eine Grundlinie, hinter die kein
späterer Lauf zurückfallen darf. Der Korpus umfasst einunddreißig Aufträge; er
gibt 1413 Befehle her, von denen 1287 angewandt werden, und 632 von 641 mit der
amtlichen Nachfassung verglichenen Normen gehen auf.
Artikel 1
Der Korpusbericht
(1) Der Schalter „--korpus“ nimmt eine Auftragsliste entgegen und gibt statt einer
Synopse je Auftrag eine Zeile Kennzahlen aus (Korpusbericht). Die Liste ist
eine Tabulatortabelle mit den Spalten Bezeichnung, Stammfassung, Hefte,
Artikel, Nachfassung und Stichtag; es sind dieselben Angaben, die auch die
Befehlszeile entgegennimmt. Ein Auftrag ist nichts anderes als ein Lauf.
(2) Der Bericht führt je Auftrag die erschlossenen, die angewandten, die liegen
gebliebenen und die am Stichtag zurückgestellten Befehle, sodann die gleichen,
geprüften, fehlenden, überzähligen und abweichenden Normen des Abgleichs und
zuletzt die Gründe nach Häufigkeit.
(3) Der Schalter „--grundlinie“ hält den Lauf gegen einen früheren Bericht. Gerügt
wird allein, was fällt: weniger erschlossene oder angewandte Befehle, weniger
gleiche Normen, mehr liegengebliebene, fehlende, überzählige oder abweichende.
Ein Fortschritt ist kein Fehler, sondern der Zweck der Arbeit; er verlangt
allein, die Grundlinie fortzuschreiben. Der Rückschritt endet mit dem
Rückgabewert 3 wie ein nicht aufgehender Abgleich.
(4) Der Schalter „--synopsen“ behält die Einzelsynopsen und legt eine
Übersichtsseite daneben, die auf jede von ihnen verweist. Ohne sie wäre der
Bericht eine Zahlenreihe, aus der niemand den Grund eines Restes erführe.
(5) Ein Auftrag, der mit einem Fehler abbricht, hält den Lauf nicht an; seine
Zeile trägt den Fehlertext, und die Grundlinie rügt ihn. Der Grundsatz der
Nichtverwerfung gilt auch für den Massenlauf.
(6) Die Auszählung der Gründe, die bisher in der Befehlszeilenfassung stand, ist
in die Pipeline gewandert (Pipeline.zaehleGruende) und wird von beiden
verwendet; das Ergebnis (Pipeline.Ergebnis) führt sie fortan mit.
Artikel 2
Der Beispielkorpus
(1) Unter „sampledata/korpus.tsv“ treten einunddreißig Aufträge hinzu, nämlich
dieselben, die die Akzeptanzprüfungen fahren, nebst den Entwürfen, den beiden
Beschlussempfehlungen und einem Stichtagsfall.
(2) Drei Aufträge tragen mit Absicht hohe Reste: Bei den Beschlussempfehlungen und
bei Rheinland-Pfalz schreibt die Vorlage eine ältere Fassung fort als die
eingesetzte Stammfassung, weshalb deren Zieltexte nicht vorkommen. Sie sind
gleichwohl Wächter — steigen ihre Reste, so hat sich etwas verschlechtert.
(3) Die Grundlinie („sampledata/korpus-grundlinie.tsv“) hält den Stand dieses
Tages fest. Sie und die Auftragsliste sind eigene Arbeit; ihr Vermerk steht in
der Zuordnungsdatei (REUSE.toml) und nicht als Kopfzeile in der Datei, weil
eine neu gesetzte Grundlinie ihn sonst verlöre.
(4) Das Skript „deploy/korpuslauf.sh“ stellt das Erzeugnis her, falls es fehlt,
fährt den Lauf und legt Bericht, Synopsen und Übersicht in „target/korpus“ ab.
Artikel 3
Prüfung
(1) Der Korpuslauf wird mitgeprüft (KorpusberichtTest): Kein Auftrag darf
scheitern, und keine Kennzahl darf hinter die Grundlinie zurückfallen.
(2) Die Rügeregel selbst wird für sich geprüft — dass der Fortschritt
ungerügt bleibt, der Rückschritt in jeder der vier Kennzahlen gerügt wird, ein
gescheiterter Auftrag auffällt und ein aus dem Lauf verschwundener ebenfalls.
(3) Dass die Liste vollständig gelesen wird, ist eigens geprüft: Anmerkungszeilen
werden übergangen, „-“ heißt „nicht angegeben“, mehrere Hefte werden durch
Komma getrennt, und der Stichtag wird als Datum gelesen.
Schlussbestimmung
Die vorstehenden Änderungen sind durch die vollständige Prüfung (mvnw verify,
vierhundertdreiundvierzig Testfälle) und durch die Lizenzprüfung (reuse lint,
zweihundertvierzehn von zweihundertvierzehn Dateien) bestätigt worden. Die
Rügeregel ist überdies am ganzen Korpus erprobt worden: Eine um eins verschärfte
Grundlinie führt zur Rüge „UWG-BGBl: angewandte Befehle 19 statt 20“ und zum
Rückgabewert 3.
════════════════════════════════════════════════════════════════════════════════
Fassung vom 28. August 2026 (erste Fassung des Tages),
zuletzt geändert durch die am 28. August 2026 vorgenommenen Änderungen
════════════════════════════════════════════════════════════════════════════════
Jeder Befehl nennt fortan die Seite des Änderungsdokuments, auf der er steht.
Bislang wies die Synopse Artikel und Gliederungspunkt aus; wer einem
liegengebliebenen Befehl nachgehen wollte, musste ihn in einem Heft von achtzig
Seiten selbst suchen — die eigentliche Arbeit lag damit beim Leser. Die Seite
wird dabei nicht mitgezählt, sondern am Wortlaut wiedergefunden. Eine Marke, die
im Textstrom mitreiste, käme dafür nicht in Betracht: Der Bereiniger zieht weiche
Umbrüche zusammen, entfernt Kolumnentitel und schneidet Seitenfüße heraus; die
Marke geriete entweder vor einen Zeilenanfangs-Anker und nähme jedem
Normkopf-Muster seine Grundlage, oder sie verschwände mit der Zeile, die sie trug.
Artikel 1
Die Seitenkonkordanz
(1) Der Auszug hält seinen Wortbestand fortan seitenweise fest (Seitenkonkordanz).
Festgehalten wird nur, was Buchstabe oder Ziffer ist, kleingeschrieben, nebst
der Seite eines jeden Zeichens; der Fontgrößenfilter (FontgroessenFilter)
erhebt beides aus denselben Zeilen, aus denen er den Text fügt, sodass ein
zweiter Lauf über das Druckwerk unterbleibt.
(2) Der Befehlstext wird darin gesucht, auf dieselbe Weise heruntergebrochen.
Silbentrennung, Anführungszeichen, Leerraum und Satzzeichen — also gerade das,
woran die Aufbereitung arbeitet — stören den Vergleich dann nicht.
(3) Gesucht wird von einem fortschreitenden Leser (Seitenkonkordanz.Leser) aus,
der sich merkt, wie weit die Erschließung im Dokument gediehen ist. Ohne ihn
träfe ein mehrfach vorkommender Wortlaut („Absatz 3 wird aufgehoben“) stets
dessen erstes Vorkommen. Zurück schreitet er nie.
(4) Was kürzer ist als acht Zeichen des Wortbestandes, ist kein Wortlaut, sondern
eine Marke; was sich nicht wiederfinden lässt, bleibt ohne Seitenangabe. Eine
falsche Seite wäre schlimmer als keine.
Artikel 2
Herkunft und Anzeige
(1) Die Herkunft (Provenienz) führt die Seite als weiteren Bestandteil; ihre
Anzeige hängt sie an („Artikel 1 23. b) (S. 8)“). Damit tragen die Synopse,
der Abschnitt „Manuell prüfen“ und die Ausgabe „--dump-befehle“ die
Fundstelle, ohne dass an ihnen etwas zu ändern gewesen wäre.
(2) Der Extraktor (PatchTextExtraktor) gibt den Auszug samt Konkordanz aus; die
Pipeline führt sie am Quelldokument mit und übergibt sie dem Parser
(AenderungsgesetzParser), der sie durch die Erschließung reicht.
(3) Zwei Eingaben bleiben ohne Seitenangabe, und zwar mit Grund: die
Klartextdatei, die kein Satzbild hat, und die beschlossene Fassung einer
Beschlussempfehlung, die aus zwei Spalten zusammengesetzt ist und so auf
keiner Seite des Heftes steht.
Artikel 3
Prüfung
(1) Die Seitenkonkordanz wird für sich geprüft (SeitenkonkordanzTest, sechs
Fälle): der einfache Fund, der über einen Trennstrich hinweg zusammengesetzte,
der mehrfach vorkommende Wortlaut, das Nichtgefundene, die zu kurze Marke und
die Eingabe ohne Satzbild.
(2) Am Druckwerk selbst wird zweierlei geprüft (EndToEndTest.fundstelleImHeft):
dass jeder der neunzehn Befehle des Heftes BGBl. 2026 I Nr. 43 eine Seite
zwischen eins und fünf trägt und dass die Seiten in der Reihenfolge der
Erschließung steigen. Die Gegenprobe am Druckbild nennt zwei Fundstellen
namentlich. Dass eine Klartexteingabe keine Seite trägt, wird eigens geprüft
(EndToEndTest.klartextTraegtKeineSeite).
Schlussbestimmung
Die vorstehenden Änderungen sind durch die vollständige Prüfung (mvnw verify,
vierhundertachtunddreißig Testfälle) und durch die Lizenzprüfung (reuse lint,
zweihundertneun von zweihundertneun Dateien) bestätigt worden. Die Fundstelle des
Befehls „Artikel 1 23. b)“ des Gesetzes vom 16. Oktober 2023 ist am Druckbild der
achten Seite nachgeschlagen und für richtig befunden worden.
════════════════════════════════════════════════════════════════════════════════
Fassung vom 27. August 2026 (zweite Fassung des Tages),
zuletzt geändert durch die am 27. August 2026 vorgenommenen Änderungen
════════════════════════════════════════════════════════════════════════════════
Mecklenburg-Vorpommern tritt als sechzehntes Land hinzu. Sein Gesetzblatt liegt
vollständig offen; das Portal dagegen ist eine Einseitenanwendung ohne
Fassungsliste. Die Vorfassung kommt deshalb aus dem Gesetzblatt selbst: Nennt der
Einleitungssatz die Stammvorschrift ohne jede frühere Änderung, so ist die
Ursprungsfassung beweisbar die Vorfassung. Der Fall ist überdies der schärfste
Prüfstein der Artikelwahl, den das Erzeugnis kennt: Das Heft trägt ein
Mantelgesetz mit rund sechzig Artikeln, von denen jeder ein anderes Werk ändert.
Artikel 1
Aufbereitung und Erkennung
(1) Der Textbereiniger (TextBereiniger) schneidet Kolumnentitel und Seitenfuß des
mecklenburgischen Gesetzblattes heraus. Beide stehen im Inhaltsstrom, und zwar
mitten im Befehlstext; die Seitenzahl klebt dabei an der Heftnummer.
(2) Die Anweisung an die Inhaltsübersicht wird auch in der Wortwahl der Ersetzung
gelesen („die Angabe zu § 10 wird durch die folgende Angabe ersetzt“), nicht
nur in der der Neufassung („wie folgt gefasst“).
Artikel 2
Beispieldaten
Unter „sampledata/MecklenburgVorpommern“ treten das Heft GVOBl. M-V 2026 Nr. 21
und die Ursprungsfassung der Ausbildungs- und Prüfungsordnung amtstierärztlicher
Dienst nebst Herkunftsnachweis hinzu; der Akzeptanzfall
(EndToEndTest.apoAmtsTaMecklenburgVorpommern) pinnt die Wahl des vierundvierzigsten
Artikels, vierundzwanzig gelesene und zwanzig angewandte Befehle. Die vier Reste
betreffen sämtlich die Anlagen und sind in „MecklenburgVorpommern/SOURCES“
benannt. Eine Nachfassung gibt es nicht: Der Artikel tritt erst am 1. September
2026 in Kraft, weshalb die Gesamtausgabe des Portals noch die Vorfassung ist —
und eben deshalb als deren Gegenprobe gedient hat.
Schlussbestimmung
Die vorstehenden Änderungen sind durch die vollständige Prüfung (mvnw verify,
vierhundertdreißig Testfälle) und durch die Lizenzprüfung (reuse lint,
zweihundertsieben von zweihundertsieben Dateien) bestätigt worden.
════════════════════════════════════════════════════════════════════════════════
Fassung vom 27. August 2026 (erste Fassung des Tages),
zuletzt geändert durch die am 27. August 2026 vorgenommenen Änderungen
════════════════════════════════════════════════════════════════════════════════
Bremen tritt als fünfzehntes Land hinzu. Sein Portal ist nach BRAVORS und
recht.nrw.de das dritte, das einer Skriptabfrage gewöhnliches HTML liefert, und
das erste außerhalb Brandenburgs, das jede frühere Gesamtausgabe einzeln
adressierbar führt; Vor- und Nachfassung stammen daher aus derselben Quelle. Das
Heft selbst ist einfach gesetzt, seine Befehlssprache dagegen eigen: Sie fasst
den Namen der Verordnung neu, bezeichnet Stellen durch die bloße
Aufzählungsmarke, ändert „durch die Worte“ statt zu ersetzen, ergänzt „um Satz 2“
statt anzufügen und benennt ihr Satzzeichen, statt es zu zeigen. Zweimal versäumt
sie es, ein Zitat zu schließen.
Artikel 1
Grenze eines nicht geschlossenen Zitats
(1) Die Grenze am Aufzählungspunkt (ZitatExtraktor) verlangte bisher, dass der
Rest des Abschnitts nach dem Schluss ausbalanciert zurückbleibe. Diese
Bedingung ist zu eng: Ein Abschnitt kann mehrere nicht geschlossene Zitate
tragen, und jedes ist an seiner eigenen Grenze zu schließen. An ihre Stelle
tritt die Probe, dass im Rest kein schließendes Anführungszeichen ohne
öffnendes steht — wer mitten in einem ordentlich geschlossenen Zitat schnitte,
ließe dessen Schlusszeichen ohne Gegenstück zurück.
(2) Im bremischen Heft öffnen die Nummern 8 Buchstabe a und 13 je ein Zitat, das
sie nicht schließen. Vor dieser Änderung verschlang das erste die Nummern 9
bis 13; das Heft gab 22 Befehle her, nunmehr gibt es 41.
Artikel 2
Aufbereitung und Befehlserkennung
(1) Der Textbereiniger (TextBereiniger) schneidet den Kolumnentitel des bremischen
Gesetzblattes heraus. Er steht im Inhaltsstrom und klebt am Seitenumbruch
hinter dem letzten Satz der Vorseite.
(2) Der Stellenparser (StellenParser) nimmt drei Bezeichnungsweisen an: die bloße
Aufzählungsmarke als ganze Stellenangabe („In e) …“, „f) wird gestrichen“) —
jedoch nur, wenn sie die ganze Angabe ausmacht —, den Aufzählungspunkt am Ende
einer Nummernangabe („Nummer 1. wird wie folgt gefasst“) und den der Stellung
nach bezeichneten letzten Satz („Im letzten Satz …“), dessen Zählung erst am
Text feststeht.
(3) Der Name des Werkes („Der Name der Verordnung wird wie folgt gefasst“) gilt
als dessen Überschrift; der Anwender setzt daraufhin den Langtitel.
(4) Der Befehlserkenner (BefehlErkenner) nimmt vier Nebenformen an: „geändert“
als Verb der Wortersetzung neben „ersetzt“; die Streichung mit Positionsanker
(„In Satz 2 werden nach dem Wort „…“ die Worte „…“ gestrichen“); die Anfügung
in der Wortwahl „am Ende um Satz 2 ergänzt“; und die Aufhebung eines benannten
Satzzeichens samt Anfügung („das Satzzeichen „Punkt“ wird aufgehoben und
folgendes angefügt: „…““), die der Sache nach eine Ersetzung des
Schlusszeichens ist.
Artikel 3
Berichtigung der Einfügungsrichtung
Das Richtungswort „hinter“ war in den Mustern der Wörter-Einfügung zwar
zugelassen, wurde bei der Bildung des Ankers aber nirgends geprüft; die
Einfügung fiel daher stets in den Vor-Zweig, und die Wörter traten vor den Anker
statt dahinter. Betroffen waren sämtliche Einfügungen mit Wortanker. Die Prüfung
erfolgt fortan an einer Stelle (nachAnker).
Artikel 4
Anwendung: was eine Neufassung stehen lässt
(1) Eine Neufassung, die unvollendet endet — auf Doppelpunkt oder Komma —, meint
den Vordersatz allein und lässt die Untergliederung stehen, die ihm folgt.
Wer die Glieder mitändern will, führt sie im Zitat mit auf. Ohne diese Regel
verlöre § 3 Absatz 2 der bremischen Verordnung seine zwölf Glieder, und die
vier folgenden Befehle fänden ihr Ziel nicht mehr.
(2) Das Zitat des ersten Satzes trägt die Absatzbezeichnung mit. Sie gehört dem
Absatz und nicht dem Satz; bliebe sie stehen, so führte der Absatz seine
Nummer zweimal.
(3) Ein Umbruch mitten im Satz ist Satzspiegel und kein Textbestand. Endet die
vorige Zeile auf ein Binde- oder Verhältniswort und beginnt die folgende klein
oder mit einer Ziffer, so werden beide zusammengezogen. Die Kurzüberschrift
eines Aufzählungsgliedes und ihre Begriffsbestimmung (Anhang zu § 3 Abs. 3
UWG) bleiben davon unberührt — jene endet nicht auf ein solches Wort.
(4) Ein Platzhalter („(weggefallen)“) hält nur Platz innerhalb desselben Blockes.
Die Aufzählung endet dort, wo eine Zeile flacher einrückt als die aufgehobene
Einheit; die Buchstaben einer anderen Nummer gehen sie nichts an.
(5) Eine angefügte Einheit, die ihre Nummer nennt, tritt an den genannten Platz
und nicht ans Ende, sofern der Zieltext schon so weit zählt („Absatz 1 wird am
Ende um Satz 2 ergänzt“ macht den neuen Satz zum zweiten). Reicht die Zählung
nicht so weit, so fallen beide Lesarten ohnehin zusammen.
Artikel 5
Beispieldaten
Unter „sampledata/Bremen“ treten das Heft Brem.GBl. 2026 Nr. 87, die Vorfassung
und die amtliche Nachfassung der Berufsfachschulverordnung nebst Herkunftsnachweis
hinzu; der Akzeptanzfall (EndToEndTest.berufsfachschulVOBremen) pinnt 41 gelesene
und 37 angewandte Befehle sowie den Gleichlauf von 26 der 29 Normen mit der
amtlichen Nachfassung. Die drei Reste liegen sämtlich an der Vorlage und sind in
„Bremen/SOURCES“ benannt.
Schlussbestimmung
Die vorstehenden Änderungen sind durch die vollständige Prüfung (mvnw verify,
vierhundertachtundzwanzig Testfälle) und durch die Lizenzprüfung (reuse lint,
zweihundertvier von zweihundertvier Dateien) bestätigt worden.
════════════════════════════════════════════════════════════════════════════════
Fassung vom 26. August 2026 (vierte Fassung des Tages),
zuletzt geändert durch die am 26. August 2026 vorgenommenen Änderungen
════════════════════════════════════════════════════════════════════════════════
Hamburg tritt als vierzehntes Land hinzu. Das dortige Gesetzblatt bringt zwei
Gliederungen, die im übrigen Landesrecht nicht vorkommen: Das Änderungsdokument
selbst teilt sich in Paragraphen, obgleich dasselbe Heft davor eine Verkündung
führt, die sich in Artikel teilt; und seine Befehle sind dezimal gegliedert, wo
die übrigen Blätter Buchstaben setzen. Der Fall hat überdies vier Idiome, drei
Aufbereitungs- und drei Anwendungsfunde gebracht.
Artikel 1
Aufbereitung des hamburgischen Satzes
(1) Der Textbereiniger (TextBereiniger) normalisiert fortan sämtlichen Leerraum,
den Javas Begriff des Leerzeichens nicht kennt (schmal, halbgeviert, geviert
und dergleichen). Das Blatt setzt zwischen Paragraphenzeichen und Nummer ein
schmales Leerzeichen; ohne dies ist „§ 1“ dort kein Normkopf, und ein ganzes
Heft bliebe ungelesen.
(2) Der Kolumnentitel des Blattes („Dienstag, den 26. Mai 2026 149HmbGVBl.
Nr. 17“) steht im Inhaltsstrom und fällt hinter das Zitat eines Befehls; er
wird wie der Berliner und der thüringische herausgeschnitten.
(3) Die Lesereihenfolge (Lesereihenfolge) ordnet die Zeilen einer Spalte fortan
nach ihrer Grundlinie und nicht mehr nach dem Inhaltsstrom. Die Sortierung ist
stabil und ändert am Regelfall nichts; im hamburgischen Satz bewahrt sie davor,
dass das Schlusswort der Eingangsformel („verordnet:“) mitten in einen Absatz
der rechten Spalte fällt und dort ein Wort zerschneidet.
(4) Der Wortbestand, der über Trennstriche vor Großbuchstaben entscheidet, nimmt
fortan auch die von Punkten befreite Form eines Wortes auf. Ohne sie fände
„(Immo-“ + „WertV)“ seinen Beweis nicht, obgleich das Dokument „ImmoWertV.“
wenige Zeilen weiter führt.
Artikel 2
Gliederung und Erkennung
(1) Der Gliederungsscanner (GliederungsScanner) erkennt die Dezimalgliederung
(„6.1“, „7.1.1“). Die Ebene steht in der Zahl selbst; eröffnet wird eine
Unterebene nur unter demjenigen Punkt, dessen Bezeichnung das Label
voranstellt. Der Gliederungspfad der Provenienz wiederholt sie nicht.
(2) Die Artikelteilung (AenderungsgesetzParser) versucht die §-Teilung fortan
nicht erst dann, wenn ein Heft überhaupt keinen Artikel führt, sondern schon
dann, wenn kein Artikel das Stammgesetz betrifft. Ein Sammelheft trägt beide
Gliederungen nebeneinander.
(3) Der Befehlserkenner (BefehlErkenner) nimmt vier Nebenformen an: „die
Textstelle“ neben „die Wörter“ und „die Angabe“; „hinter“ neben „nach“ (als
Ort der Einfügung wie als Wortanker); die subjektlose Anfügung („Es wird
folgender Absatz 3 angefügt: „…““), deren Ziel allein aus dem Rahmen folgt;
und die Neufassung einer Paragraphenfolge auch mit „und“ statt „bis“ und ohne
vorangestelltes „Die“.
Artikel 3
Anwendung
(1) Tritt ein Satzzeichen an die Stelle eines Wortes, so nimmt es dessen
Zwischenraum mit („…Aufgaben und“ wird „…Aufgaben,“ und nicht „…Aufgaben ,“).
Das ist die Umkehrung der bereits geregelten Fuge.
(2) Ein Satz, der an einen Absatz mit Aufzählung angefügt wird, tritt auf eine
eigene Zeile: Er gehört dem Absatz und nicht dem letzten Aufzählungsglied. Er
erbt dabei die Einrückung des Blockes, denn die Einrückung trägt die
Gliederung; bündig gesetzt beendete er den Block, dem er zugehören soll.
(3) Eine Neufassung, deren Bezeichnung eine aufsteigende Umnummerierung räumt,
tritt hinter diese zurück. „Nummer 3 erhält folgende Fassung“ neben „Die
bisherige Nummer 3 wird Nummer 4“ meint die ursprüngliche Zählung; liefe die
Neufassung zuerst, so verlöre die bisherige Nummer 3 ihren Wortlaut. Die
Neufassung findet ihre Bezeichnung alsdann geräumt und bleibt zu Recht liegen;
sie als Einfügung zu vollziehen, bleibt einer späteren Welle vorbehalten.
Artikel 4
Beispieldaten und Handbuch
(1) Unter `Hamburg/` treten das Heft Nr. 17/2026, die Ursprungsfassung der
Verordnung über den Gutachterausschuss für Grundstückswerte und die amtliche
Nachfassung hinzu, nebst Herkunftsnachweis. Die Auszeichnung nach REUSE ist
entsprechend ergänzt.
(2) Das Handbuch (README.md) wird geändert: § 7 Absatz 2 um die Nummern 18 und 19
(hamburgische Nebenformen, Neufassung einer Paragraphenfolge), § 9 Absatz 1
und 2 (unsichtbarer Leerraum, Grundlinien-Ordnung innerhalb der Spalte) und
§ 13 um einen Absatz 2a. Das Beispieldaten-Verzeichnis
(`Landesrecht-Beispiele.adoc`) führt Hamburg als umgesetzt.
Schlussbestimmung
Die vorstehenden Änderungen sind durch die Prüfung sämtlicher Testfälle
(vierhundertfünfundzwanzig an der Zahl, zuvor vierhundertfünfzehn) sowie durch die
vollständige Erstellung (mvnw verify) bestätigt worden. Der hamburgische Fall
steht auf einundzwanzig gelesenen und siebzehn angewandten Befehlen; zehn von
vierzehn Normen gleichen der amtlichen Nachfassung. Von den vier Abweichungen
liegen drei an der Vorlage: Die Nummern 2 und 3 des Heftes schreiben „wir“ statt
„wird“, und in § 6 setzt das Gesetzblatt ein Komma nicht, das das Portal führt.
Die Auszeichnung nach REUSE ist vollständig (200 von 200 Dateien).
════════════════════════════════════════════════════════════════════════════════
Fassung vom 26. August 2026 (dritte Fassung des Tages),
zuletzt geändert durch die am 26. August 2026 vorgenommenen Änderungen
════════════════════════════════════════════════════════════════════════════════
Das Handbuch verlangte bislang, jede Eingabe als Datei bereitzuhalten. Für das
Bundesrecht war das eine Zumutung: Die Anschrift des Norm-XML folgt aus der
Abkürzung des Gesetzes, und wer sie von Hand herunterlädt, verrichtet eine Arbeit,
die das Erzeugnis selbst verrichten kann. Dasselbe gilt für die Drucksachen, die
der Bundestag frei ausgibt.
Artikel 1
Beschaffung der Eingaben
(1) Es wird der Bezug (Bezug) eingeführt. Er nimmt eine Angabe entgegen und gibt
eine Quelle zurück. Angegeben werden können ein Dateipfad, eine Anschrift
(„http://“, „https://“) sowie die Kurzform „gii:<Kennung>“ für das
Bundesrecht. Der vorhandene Dateipfad hat stets den Vorrang.
(2) Die Kennung ergibt sich aus der Abkürzung des Gesetzes: klein geschrieben,
wobei jedes andere Zeichen als Buchstabe, Ziffer und Bindestrich zum
Unterstrich wird („UWG 2004“ wird „uwg_2004“). Führt sie ins Leere, so wird im
Verzeichnis des Portals (gii-toc.xml) nachgeschlagen; eine Kennung, die mit der
angegebenen beginnt, ist gemeint, sofern es genau eine gibt. Sonst wird nicht
geraten, sondern aufgezählt.
(3) Geladenes wird unter „~/.cache/aendggner“ (oder „$XDG_CACHE_HOME“) abgelegt und
beim nächsten Lauf von dort genommen. Der Zwischenspeicher ist eine
Bequemlichkeit und keine Bedingung: Ist das Verzeichnis nicht beschreibbar, so
wird jedes Mal geladen.
(4) Ein Vermittler wird aus „HTTPS_PROXY“ und Verwandten übernommen, samt Kennung
und Kennwort. Die Laufzeit liest diese Angaben nicht von sich aus, obgleich sie
auf der Kommandozeile die gewohnten sind; in einer Behörde führt jeder Weg über
einen solchen Vermittler.
(5) Der Bezug gehört allein der Befehlszeile. Die Kernpipeline kennt weiterhin nur
die Quelle (Name und Bytes), und die Browserfassung rührt ihn nicht an: Dort
gibt es kein Dateisystem, und der Wagen des Benutzers verweigert einer fremden
Anschrift ohnehin die Auskunft.
Artikel 2
Änderung der Befehlszeile
Die Befehlszeile (AendGgner) nimmt das Stammgesetz, die Änderungsdokumente und die
Nachfassung fortan als Zeichenketten entgegen und beschafft sie über den Bezug. Die
Meldungen nennen den Namen der Quelle und nicht mehr den Dateinamen; für eine Datei
ist das dasselbe.
Artikel 3
Änderung des Handbuchs
Das Handbuch (README.md) wird wie folgt geändert:
1. § 5 wird um den Absatz 4 ergänzt (Anschriften als Eingabe, Kennung des
Bundesrechts, Zwischenspeicher, Vermittler, Vorrang der Datei).
2. In § 6 Absatz 2 wird die Erläuterung zu „--nachfassung“ angepasst.
Schlussbestimmung
Die vorstehenden Änderungen sind durch die Prüfung sämtlicher Testfälle
(vierhundertfünfzehn an der Zahl, zuvor vierhundertsechs) sowie durch die
vollständige Erstellung (mvnw verify) bestätigt worden. Der Abruf selbst gehört
nicht in eine Prüfung, die auf jedem Rechner laufen soll; geprüft werden die
Ableitung der Kennung, die Ableitung des Namens und der Vorrang der vorhandenen
Datei (BezugTest). Von Hand belegt ist der volle Lauf ohne jede Datei:
„gii:UWG 2004“ nebst der Drucksache 21/1855 von dserver.bundestag.de ergibt zwanzig
angewandte Befehle, und die Synopse aus „gii:UWG 2004“ gleicht bis auf den Namen der
Quelle zeichengenau derjenigen aus der örtlichen XML-Datei. Die Auszeichnung nach
REUSE ist vollständig (196 von 196 Dateien).
════════════════════════════════════════════════════════════════════════════════
Fassung vom 26. August 2026 (zweite Fassung des Tages),
zuletzt geändert durch die am 26. August 2026 vorgenommenen Änderungen
════════════════════════════════════════════════════════════════════════════════
Der verweisende Befehl („Die Inhaltsübersicht wird entsprechend der vorstehenden
Nummer 8 Buchst. a geändert“) wurde bislang gelesen, aber nicht ausgeführt; das
Handbuch wies ihn in § 7 Absatz 2 Nummer 17 als Grenze aus. Die Grenze bestand
nicht in der Sache: Zu übertragen ist nicht der Wortlaut des verwiesenen Punktes,
sondern sein Ergebnis. Jener ändert die Überschrift eines Paragraphen; die Angabe
der Inhaltsübersicht ist alsdann auf den Titel zu setzen, den der Paragraph danach
trägt.
Hinzu tritt eine Prüfung, die es bisher nicht gab. Ein Änderungsgesetz muss die
Angaben der Inhaltsübersicht eigens mitändern; unterbleibt das oder greifen die
Befehle nicht, so bleibt die Übersicht hinter dem Text zurück, ohne dass ein
einziger Befehl liegenbliebe. Die neue Probe hat auf Anhieb drei Mängel des
Erzeugnisses aufgedeckt, die keine Zahl des Protokolls angezeigt hatte.
Artikel 1
Ausführung des verweisenden Befehls
(1) Die Lesart der Gliederungspunkte, mit denen ein Änderungsgesetz auf sich
selbst verweist („Nummer 11 Buchstabe a Doppelbuchstabe bb“, abgekürzt „Nr. 8
Buchst. a“), wird an einer Stelle zusammengefasst (PunktPfad). Der Leser des
Inkrafttretens (InkrafttretensLeser) bezieht sie fortan von dort.
(2) Der Anwender (BefehlAnwender) führt den verweisenden Befehl in der Schleife
aus, die als einzige die Befehlsliste kennt. Er sucht den verwiesenen Punkt im
selben Artikel — auch unterhalb seiner, wenn der Verweis eine Nummer und nicht
einen Buchstaben nennt —, entnimmt ihm den betroffenen Paragraphen und setzt
dessen Angabe auf die jetzige Überschrift (InhaltsuebersichtAnwender.
fuehreTitelNach).
(3) Was der Verweis nicht trägt, bleibt liegen und wird benannt: der Punkt, der
sich nicht findet, und der Punkt, der etwas anderes als eine Überschrift
ändert. Die Inhaltsübersicht führt allein Bezeichnung und Überschrift; was im
Absatz eines Paragraphen geschieht, hat in ihr kein Gegenstück.
Artikel 2
Probe auf die Inhaltsübersicht
(1) Nach vollzogener Anwendung wird die Inhaltsübersicht gegen den Normbestand
gehalten (InhaltsuebersichtsProbe). Gerügt werden die fehlende Angabe zu einer
eingefügten oder geänderten Norm, das Auseinandergehen von Angabe und
Überschrift sowie die verbliebene Angabe zu einer beseitigten Norm.
(2) Geprüft wird allein der Unterschied, den dieser Lauf bewirkt hat. Was die
Quelle von sich aus ungenau führt, bleibt außer Betracht; es wäre ein Befund
über die Quelle und nicht über den Lauf. Ebenso bleiben die Anlagen außer
Betracht, denn die Inhaltsübersicht führt sie nicht.
(3) Geheilt wird nichts. Die Rüge nennt überdies den Befund und nicht dessen
Ursache: Die amtliche Fassung des Gebäudeenergiegesetzes selbst schreibt in
der Überschrift des § 71k „Gas“ und in der Angabe dazu „Erdgas“.
Artikel 3
Berichtigung dreier Mängel, welche die Probe aufgedeckt hat
(1) Die Zerlegung eines Zitats in Angabe-Zeilen (InhaltsuebersichtAnwender)
trennte nur an §-Angaben. Ein Zitat, das mit einer Gliederungsmarke beginnt
und darauf zwanzig Paragraphen aufführt — so das Gebäudeenergiegesetz-Heft von
2023 mit „Unterabschnitt 4 … § 71 … § 71p …“ —, blieb deshalb eine einzige
Zeile, und jede spätere Angabe zu einem dieser Paragraphen wäre unauffindbar
gewesen. Die Zerlegung erfolgt fortan an allen Zeilenanfängen einer Übersicht;
sie ist zugleich mit derjenigen der Gesamt-Neufassung zusammengeführt, die
dasselbe längst richtig tat.
(2) Die Zerlegung eines eingefügten Paragraphen-Blocks (BefehlAnwender) trennte an
jedem „§ N“, dem ein großgeschriebenes Wort folgte. Ein Querverweis mitten im
Satz sah damit aus wie eine Überschrift: „… mit Systemen für die
Gebäudeautomatisierung nach § 71a Projektunterlagen in überprüfbarer Form
vorzulegen.“ erzeugte einen Paragraphen „§ 71a“ mit einem halben Satz als
Überschrift. Ein Normkopf muss fortan eine Zeile oder wenigstens einen Satz
eröffnen; der Wortbestand unterscheidet beide nicht, die Stellung tut es.
(3) Die Überschrift einer zitierten Norm endete bislang an der ersten
großgeschrieben beginnenden Zeile. Ein am Spaltenrand umbrochener Titel verlor
dadurch seinen zweiten Teil („Verordnungsermächtigung zu dem Einsatz von
Kältemitteln in elektrischen Wärmepumpen und“ / „Wärmepumpen-Hybridheizungen“).
Endet eine Zeile auf ein Binde- oder Verhältniswort oder auf einen Trennstrich,
so ist sie fortan nicht zu Ende.
Artikel 4
Änderung des Handbuchs
Das Handbuch (README.md) wird wie folgt geändert:
1. Nach § 6b wird der § 6c „Probe auf die Inhaltsübersicht“ eingefügt; die
Inhaltsübersicht des Handbuchs wird entsprechend ergänzt.
2. § 7 Absatz 2 Nummer 17 wird neu gefasst; die dort ausgewiesene Grenze entfällt.
Schlussbestimmung
Die vorstehenden Änderungen sind durch die Prüfung sämtlicher Testfälle
(vierhundertsechs an der Zahl, zuvor dreihundertsiebenundneunzig) sowie durch die
vollständige Erstellung (mvnw verify) bestätigt worden. Neu hinzu getreten sind
drei Prüfungen des verweisenden Befehls (BefehlAnwenderTest) und sechs der Probe
(InhaltsuebersichtsProbeTest). Das Heft des Gebäudeenergiegesetzes von 2023 wird
weiterhin vollständig angewandt (119 von 119); die Probe rügt dort nur noch, was
die amtliche Fassung selbst verschieden führt (§ 71k, § 71l). Die Auszeichnung
nach REUSE ist vollständig (194 von 194 Dateien).
════════════════════════════════════════════════════════════════════════════════
Fassung vom 26. August 2026,
zuletzt geändert durch die am 26. August 2026 vorgenommenen Änderungen
════════════════════════════════════════════════════════════════════════════════
Die Kette führte kein Gedächtnis. Wer die eigene Ausgabe des Erzeugnisses als
Stammgesetz eines weiteren Laufes einspeiste, gab ihr eine Fassung, der nicht
anzusehen war, welche Hefte auf ihr bereits vollzogen sind; dasselbe Heft ein
zweites Mal angewandt fügte denselben Absatz ein zweites Mal an. Bei näherer
Prüfung erwies sich der Mangel als tiefer, als die bisherige Warnung des
Handbuchs (§ 6a Absatz 3 alter Fassung) besagte: Der Textausgeber schrieb die
Standangabe der Quelle sehr wohl aus, der Textparser aber verwarf sie mitsamt
allem, was vor dem ersten Normkopf steht. Die vom Erzeugnis errechnete Fassung
war mithin standlos, und die Altersrüge (§ 1 Absatz 6 des Handbuchs) konnte auf
ihr niemals anschlagen.
Artikel 1
Vermerk der angewandten Änderungshefte
(1) Es wird der Begriff der Fortschreibung (Fortschreibung) eingeführt. Sie
bezeichnet ein Änderungsheft, das auf einen Wortlaut bereits angewandt worden
ist, und besteht aus dessen Bezeichnung und dessen Ausfertigungsdatum.
(2) Das Gesetz (Gesetz) führt fortan die geordnete Liste seiner Fortschreibungen
mit. Hinzu treten die Methoden „mitFortschreibung“, „traegt“ und
„wortlautStand“; letztere gibt das späteste Datum an, das entweder die
Standangabe der Quelle oder eines der angewandten Hefte nennt.
(3) Der Textausgeber (LandesRechtTextAusgeber) schreibt für jede Fortschreibung
die Zeile „Fortgeschrieben durch: …“ hinter die Standzeile. Der Textparser
(LandesRechtTextParser) nimmt beide Zeilenformen im Titelblock auf, statt sie
zu verwerfen. Damit übersteht das Gedächtnis den Rundlauf.
(4) Die Standzeile wird bei dieser Gelegenheit an einer Stelle zusammengeführt:
Die Erhebung des jüngsten Datums aus einer Standangabe steht fortan im Stand
(Stand.juengstesDatum, Stand.aus) und nicht mehr im Lader des gii-XML, der
sie nunmehr von dort bezieht.
Artikel 2
Bezeichnung eines Änderungsdokuments aus ihm selbst
(1) Der Dokumentkopf (DokumentKopf) wird um das Ausfertigungsdatum ergänzt. Der
Dokumenterkenner (DokumentErkenner) erhebt es aus der für sich stehenden
Zeile „Vom <Datum>“.
(2) Erhoben wird es nur, wenn das gesamte Dokument genau eine solche Zeile führt.
Ein Sammelheft stellt mehrere Verkündungen nebeneinander — das thüringische
Gesetz- und Verordnungsblatt Nr. 2/2026 deren vier —, und welche von ihnen
das Dokument ausmacht, sagt es nicht. Gesucht wird deshalb über den vollen
Text und nicht über die ersten einhundertzwanzig Kopfzeilen; anderenfalls
bliebe die zweite Verkündung außer Sicht und das Heft trüge den Namen der
ersten.
(3) Der Anzeigename (DokumentKopf.anzeigeName) nennt fortan neben der eigenen
Drucksachennummer hilfsweise das Ausfertigungsdatum („Änderungsgesetz vom
12. Februar 2026“). Er ist zugleich der Schlüssel, an dem eine Fassung ein
Heft wiedererkennt; maßgeblich ist mithin, was im Dokument steht, und nicht,
wie die Datei benannt ist.
Artikel 3
Rüge der zweiten Anwendung; Reihenfolge der Hefte
(1) Die Kernpipeline (Pipeline) vermerkt nach jedem Änderungsdokument, dessen
Befehle wenigstens einmal gegriffen haben, die zugehörige Fortschreibung am
Gesetz. Ein Heft, dessen Befehle sämtlich liegenblieben, hat den Wortlaut
nicht fortgeschrieben und wird nicht vermerkt.
(2) Trägt die Fassung das Heft bereits, so ergeht eine Rüge in der Synopse. Der
Lauf wird nicht abgebrochen und kein Befehl verworfen (§ 1 Absatz 4 des
Handbuchs); vermerkt wird das Heft alsdann kein zweites Mal, denn die Liste
zählt Hefte und nicht Anwendungen.
(3) Tragen sämtliche Änderungsdokumente eines Laufes ein Ausfertigungsdatum, so
werden sie in dessen Reihenfolge angewandt; jedes Heft setzt den Stand
voraus, den das vorige hinterlässt. Fehlt einem das Datum, so verbleibt es
bei der Reihenfolge der Aufrufargumente. Eine Umstellung wird in der Synopse
genannt.
(4) Die Altersrüge (AenderungsgesetzParser) bemisst sich fortan nach dem
Wortlautstand des Gesetzes und nicht mehr allein nach dessen Standzeile. Sie
trägt damit auch in der Kette: Wer ein Heft anwendet, macht den Wortlaut so
jung wie dieses Heft.
Artikel 4
Änderung des Handbuchs
Das Handbuch (README.md) wird wie folgt geändert:
1. § 5 Absatz 2 wird um eine Nummer 4 ergänzt, die die beiden Kopfzeilen des
kanonischen Klartextes benennt.
2. § 6a wird um die Absätze 3 bis 5 ergänzt (Reihenfolge der Hefte, Gedächtnis
der Kette nebst Rüge, Fortwirkung der Altersrüge); die bisherigen Absätze 3
und 4 werden die Absätze 4 und 6.
3. § 17 Absatz 3 wird dahin ergänzt, dass der Rundlauf auch den Kopf umfasst.
Schlussbestimmung
Die vorstehenden Änderungen sind durch die Prüfung sämtlicher Testfälle
(dreihundertsiebenundneunzig an der Zahl, zuvor dreihundertachtundachtzig) sowie
durch die vollständige Erstellung (mvnw verify) bestätigt worden. Neu hinzu
getreten sind der Rundlauf des Kopfes (LandesRechtTextAusgeberTest), die Erhebung
und die Prüfung des Ausfertigungsdatums an sechs Beispieldokumenten
(DokumentErkennerTest) sowie die Kettenprüfung am Heft des Dritten Gesetzes zur
Änderung des Gesetzes gegen den unlauteren Wettbewerb (EndToEndTest). Die
Auszeichnung nach REUSE ist vollständig (191 von 191 Dateien).
════════════════════════════════════════════════════════════════════════════════
Fassung vom 25. August 2026,
zuletzt geändert durch die am 25. August 2026 vorgenommenen Änderungen
════════════════════════════════════════════════════════════════════════════════
Der Vordruck der Browserfassung führte im Block „Angaben zu den Änderungen“ fünf
Eintragungen untereinander auf: die Dateiwahl und vier Nebenangaben. Drei davon —
der anzuwendende Artikel, der Stichtag und die reine Textausgabe — sind
Sonderfälle, die im Regelfall leer bleiben; sie verstellten den Blick auf das
Wesentliche. Zugleich war das Ankreuzfeld für die unveränderten Vorschriften
leer, obgleich die vollständige Synopse dem entspricht, was erwartet, wer
ein Gesetz in seiner neuen Fassung ansehen will.
Am selben Tage sind zwei Leistungen hinzugetreten, die das Erzeugnis längst
erbringen konnte, aber nicht herausgab, und fünf namentlich festgehaltene Lücken
der Befehlsabdeckung geschlossen worden. Die erste Leistung ist die
fortgeschriebene Fassung selbst: Sie stand als vollständiges Gesetz im
Arbeitsspeicher, verließ das Erzeugnis aber nur als halbe Spalte einer Synopse.
Die zweite ist der Prüfmaßstab: Ob ein Lauf gelungen ist, entscheidet nicht die
Zahl der angewandten Befehle, sondern der Wortlaut hinterher — und dieser Maßstab
stand allein im Testcode, sodass jedes neue Land ihn ein zweites Mal aufschreiben
musste.
Artikel 1
Ausklappbarer Abschnitt „Weitere Angaben“
(1) Die Felder „Anzuwendender Artikel“ und „Stichtag“ sowie das Ankreuzfeld
„Statt der Synopse nur den maschinell gelesenen Text der Änderungsdokumente
ausgeben“ treten aus dem Block „Angaben zu den Änderungen“ heraus und stehen
fortan hinter der zugeklappten Aufschrift „Weitere Angaben“. Beschriftungen,
Erläuterungen und Bezeichner bleiben unberührt; die Auslesestellen in
„app.js“ gelten unverändert fort, weil eingeklappte Felder ihren Wert
behalten.
(2) Die Aufschrift tritt an die Stelle der Leitspalte und läuft über die volle
Breite des Vordrucks — dieselbe Form, die die Leitspalte auf schmalem Schirm
ohnehin annimmt. Das Klappzeichen ist dasselbe wie an der Ausfüllhilfe.
(3) Ein geschlossenes „details“ druckt seinen Inhalt nicht; ein Vordruck gehört
aber vollständig aufs Papier. Der Abschnitt klappt daher vor dem Druck
selbsttätig auf und nimmt danach seinen vorherigen Zustand wieder ein.
Artikel 2
Vorankreuzung der vollständigen Synopse
(1) Das Ankreuzfeld „Unveränderte Vorschriften mit in die Synopse aufnehmen“ ist
im Vordruck vorangekreuzt. Die Befehlszeile bleibt unberührt: Dort ist
„--vollstaendig“ weiterhin ausdrücklich anzugeben.
(2) Die Verfügung der Zentralstelle wies die Zahl der Einträge der Synopse als
„geänderte Normen“ aus. Das traf schon bisher nur zu, solange die
unveränderten Vorschriften fehlten, und wäre nunmehr im Regelfall unrichtig
geworden. Sind sie aufgenommen, so heißt die Zahl fortan „Normen in der
Synopse“.
Artikel 3
Fortschreibung des Handbuchs
(1) § 14 erhält einen Absatz über die Anordnung der Angaben im Vordruck, die
Vorankreuzung und das Verhalten beim Drucken. Die nachfolgenden Absätze
werden fortlaufend weitergezählt; der Verweis in § 4 Absatz 3 wird angepasst.
Artikel 4
Ausgabe der fortgeschriebenen Fassung
(1) Der Textausgeber (LandesRechtTextAusgeber) kehrt den Klartextleser um: Aus
einem Gesetz wird der kanonische Klartext nach § 5 Absatz 2 des Handbuchs.
Ausgegeben wird allein, was das Datenmodell trägt; erfunden wird nichts. Die
Abkürzungszeile tritt nur auf, wenn die Quelle eine geführt hat.
(2) Zwei Grenzen des Formats sind im Quelltext benannt: Der Normkopf einer Anlage
nimmt keinen Titel auf, und eine Gliederungseinheit hinter der letzten Norm
des Textteils hat keinen anderen Ort als eben diesen.
(3) Der Schalter „--neufassung <Datei>“ schreibt die Fassung neben der Synopse
fort; „-“ bezeichnet die Standardausgabe. Damit steht die Kette: Die Ausgabe
des ersten Laufes ist das Stammgesetz des zweiten.
(4) Der Beleg ist der Rundlauf und nicht der Augenschein. Er wird an sämtlichen
dreiundzwanzig Klartext-Stammfassungen des Beispielkorpus geführt und
überdies am Bundesrecht, dessen Ausgangsformat das gii-XML ist.
Artikel 5
Abgleich mit der amtlichen Nachfassung
(1) Der Nachfassungsabgleich (Nachfassungsabgleich) stellt die errechnete Fassung
normweise gegen die amtliche und weist die fehlenden, die überzähligen und die
abweichenden Normen aus. Verglichen wird nach Normalisierung des Leerraums;
die Überschrift zählt zum Wortlaut, denn auf sie zielen eigene Befehle.
(2) Der Schalter „--nachfassung <Datei>“ nimmt dieselben Eingaben an wie das
Stammgesetz. Der Bericht tritt als Abschnitt „Abgleich mit der amtlichen
Nachfassung“ in die Synopse; die Abweichung wird dort wortweise gezeigt, links
die amtliche, rechts die errechnete Fassung. Geht der Abgleich nicht auf, so
endet der Lauf mit dem Rückgabewert 3.
(3) Die Akzeptanzprüfungen fahren fortan denselben Abgleich; vier
handgeschriebene Vergleichsschleifen weichen ihm. Werkzeug und Prüfung messen
damit an einem Maßstab.
(4) An die Stelle der Überladungsleiter der Pipeline tritt ein Auftrags-Record.
Artikel 6
Fortschreibung des Klartextlesers
(1) Der Rundlauf nach Artikel 4 Absatz 4 hat zwei Mängel des Lesers zutage
gefördert. Eine nummerierte Zeile gilt als Unter-Überschrift, wenn ihr eine
weitere Überschrift folgt; als solche zählten bislang nur drei der fünf
Formen. Die arabische und die ordinalwörtliche Form treten hinzu.
(2) Das Bundesrecht führt aufgehobene Paragraphen unter einer Sammelbezeichnung
(„§§ 17 u. 18“, Titel „(weggefallen)“, im gii-XML mit der Platzhalterkennung
„(XXXX)“). Der kanonische Klartext kannte diese Kopfzeile nicht; sie wäre in
den Wortlaut der Vornorm gefallen und hätte ihn verfälscht.
Artikel 7
Die Überschrift einer Aufzählungseinheit
(1) Der Überschrift-Zweig des Anwenders verzweigte bei jeder Stelle, die eine
Überschrift nennt, unbedingt auf den Titel der Norm und verwarf dabei jede
feinere Komponente schweigend. Welche Überschrift gemeint ist, entscheidet
fortan die Auflösung der Stelle ohne die Überschrift-Komponente: Löst sie auf
eine ganze Norm auf, so ist deren Titel gemeint; löst sie auf einen
Textbereich auf, so ist dessen Kopfzeile gemeint.
(2) Ein Block aus einer einzigen Zeile hat keine Überschrift, sondern nur Text;
dort wird gerügt statt angewandt.
(3) Die Neufassung einer solchen Kopfzeile bleibt eine bewusst gezogene Grenze
und wird nunmehr als solche gerügt: Die Kopfzeile trägt zugleich die
Aufzählungsmarke, die eine Neufassung nicht mitliefert.
Artikel 8
Skopus einer Wortoperation im Verbund
(1) Bleibt die Begleitklausel eines Verbunds bei norm-weiter Auflösung
mehrdeutig, so entscheidet die soeben umnummerierte Einheit. Der Vorrang
bleibt bei der weiten Suche; findet sie gar keine Fundstelle, so meint der
Befehl etwas anderes und bleibt liegen.
(2) Die Regel gehört zur Anwendung und nicht zur Erkennung: Ob ein Anker
mehrdeutig ist, steht erst nach den vorangegangenen Punkten fest. Der Schritt
trägt darum eine Rückfallstelle, die das Auffalten des Verbunds mitgibt —
vorwärts und nur innerhalb desselben Verbunds.
Artikel 9
Landesrechtliche Befehlsformen aus Rheinland-Pfalz
(1) „Strichpunkt“ gilt als Nebenform des Semikolons, als Subjekt wie als Ziel.
(2) Der Halbsatz wird eine eigene Ebene der Anfügung. Er beginnt keinen neuen
Satz, sondern setzt den bestehenden fort; angefügt wird er nur, wenn der
Zieltext auf einen Strichpunkt endet. Als Ziel einer Struktur-Einfügung oder
-Ersetzung bleibt er ausgeschlossen.
(3) Der bezugspunktlose Chapeau-Lokator („In der Einleitung“, „Im Eingangssatz“)
tritt als zweite Alternative zum vorhandenen Muster.
(4) Die Verweisung auf einen anderen Punkt desselben Artikels
(VerweisenderBefehl) wird gelesen und ausdrücklich als Grenze gerügt. Der
Rest wandert damit von „Befehl nicht erkannt“ zu „Nicht unterstützt“.
Artikel 10
Fortschreibung der Browserfassung und des Handbuchs
(1) Der Vordruck erhält das Dateifeld „Amtliche Nachfassung“ und das Ankreuzfeld
„Auch die fortgeschriebene Fassung als Klartext ausgeben“, beide hinter der
Klappe nach Artikel 1.
(2) Das Handbuch erhält die §§ 6a und 6b; § 7 nimmt die Nummern 13, 14 und 17
auf, § 8 einen Absatz über den Skopus im Verbund, § 17 einen Absatz über den
Rundlauf.
Die Prüfung geht auf: Am UWG mit dem Dritten Gesetz zu seiner Änderung ergeben
sich vorangekreuzt 19 Befehle, nichts manuell zu prüfen und 31 Normen in der
Synopse, ohne Ankreuzung dieselben 19 Befehle und 6 geänderte Normen; der
Abschnitt „Weitere Angaben“ steht beim Laden zu, klappt auf Druckanforderung auf
und danach wieder zu. Sämtliche 388 Prüfungen (zuvor 350) laufen durch, „reuse
lint“ weist 190 von 190 Dateien als vollständig ausgezeichnet aus. Der Artikel 1
der GEG-Novelle ist nunmehr vollständig angewandt (119 von 119 Befehlen, zuvor
117); Berlin gibt am Abgleich 171 von 171 Normen gleich aus, Baden-Württemberg
91 von 93 mit den beiden benannten Abweichungen; sämtliche 23 Befehle des
rheinland-pfälzischen Heftes sind erschlossen. Die Browserfassung ist mit
demselben Ergebnis durchgespielt worden.
════════════════════════════════════════════════════════════════════════════════
Fassung vom 24. August 2026,
zuletzt geändert durch die am 24. August 2026 vorgenommenen Änderungen
════════════════════════════════════════════════════════════════════════════════
Die Browserfassung ist seit ihrer Einführung als die vollwertige zweite Fassung
des Erzeugnisses ausgegeben worden; sie war es nicht. Zwei Angaben, die die
Befehlszeile seit jeher kennt, fehlten ihr: die Beschränkung auf einen einzelnen
Artikel und die Ausgabe des maschinell gelesenen Textes. Die erste war im
Vordruck nicht vorgesehen, obgleich Arbeiter und Rechenwerk den Wert längst
durchreichten — das Formular sandte an ihrer Stelle einen leeren Wert. Die zweite
war überhaupt nicht erreichbar.
Das Fehlende wiegt ungleich: Die Artikelangabe erspart Mühe, die Textausgabe
dagegen ist der einzige Weg, einem unerklärlich unangewandten Befehl auf den
Grund zu gehen. Wer im Browser arbeitet, stand vor einem Ergebnis, das er nicht
nachprüfen konnte, und war auf die Befehlszeile verwiesen — also gerade auf das,
was die Browserfassung entbehrlich machen sollte.
Artikel 1
Gemeinsame Textgewinnung
(1) Die Gewinnung des Änderungstextes wird aus der Befehlszeilenklasse in den
gemeinsamen Kern verlegt („Pipeline.extrahiereText“). Befehlszeile und
Browser nehmen fortan denselben Weg; die Ausgabe des Schalters
„--extract-only“ bleibt unverändert.
(2) Eine Prüfung hält die Ausgabe gegen das, was der Parser bekommt. Führte der
Notausgang einen anderen Text vor, so wiese er in die Irre.
Artikel 2
Ergänzung des Vordrucks
(1) Der Vordruck erhält das Feld „Anzuwendender Artikel“; ohne Eintragung bleibt
es beim bisherigen Verhalten, dass alle Artikel angewandt werden, deren
Einleitung das Stammgesetz nennt.
(2) Er erhält ferner das Ankreuzfeld „Statt der Synopse nur den maschinell
gelesenen Text der Änderungsdokumente ausgeben“. Der Text wird als Verweis
zum Öffnen und Sichern bereitgestellt; er lässt sich von Hand berichtigen und
als Klartextdatei wieder einreichen.
(3) Ein nicht gesetztes Feld kommt aus dem Fenster als „undefined“ herüber; die
Umsetzung nach Wahrheitswerten trägt dem nunmehr Rechnung, statt daran zu
scheitern.
Artikel 3
Berichtigung des Handbuchs
(1) § 14 führte die Absatznummern (6) und (7) zweimal. Die Absätze werden
fortlaufend gezählt; der Verweis in § 4 wird angepasst.
(2) In § 14 wird ein Absatz eingefügt, der die Angaben des Vordrucks den
Schaltern des § 6 Absatz 2 gegenüberstellt.
Artikel 4
Lesereihenfolge nach dem Satzbild
(1) Die Reihenfolge, in der eine Seite gelesen wird, folgt fortan dem Satzbild
und nicht mehr dem Inhaltsstrom. Gesucht wird die Rinne zwischen den Spalten;
die wenigen ganzseitenbreiten Zeilen, die sie überschreiten, zerlegen die
Seite in Bänder. Gelesen wird Band für Band, in jedem erst die linke, dann
die rechte Spalte.
(2) Findet sich keine Rinne, so bleibt es beim Inhaltsstrom. Ebenso innerhalb
einer Spalte: Der Eingriff versetzt Spalten und breite Zeilen gegeneinander,
bringt aber niemals den Satz einer Spalte durcheinander.
(3) Der übliche XY-Schnitt — erst waagerecht am weitesten Weißraumband, dann
senkrecht — leistet dies nicht. Auf einer zweispaltigen Seite mit Kolumnen-
titel liegt das weiteste Band regelmäßig mitten im Satzspiegel; im Infektions-
schutzgesetz zerriss ein solcher Schnitt eine Aufzählung mitten entzwei. Die
Spalte hat deshalb den Vorrang vor dem Band.
(4) Die Anlage Nummer 31 des Berliner Zuständigkeitskatalogs gleicht nunmehr der
amtlichen Nachfassung; es verbleiben zwei benannte Abweichungen, von denen
keine in der Anwendung begründet ist. Auch die Thüringer Verordnung und die
Beispielsynopse zum Produkthaftungsrecht tragen ihre Vorspänne nunmehr an der
Stelle, an der sie stehen.
(5) Der Prüfbestand umfasst dreihundertneununddreißig Prüfungen.
Artikel 5
Zeitliche Geltung der Änderungen
Ein Änderungsgesetz tritt nicht notwendig auf einen Schlag in Kraft. Das Dritte
Gesetz zur Änderung des Gesetzes gegen den unlauteren Wettbewerb lässt seinen
Artikel 1 Nummer 2 Buchstabe c am 19. Juni 2026 wirksam werden, alles Übrige
erst am 27. September 2026; das Infektionsschutz-Änderungsgesetz von 2020 ändert
dasselbe Stammgesetz in zwei Artikeln zu zwei Zeitpunkten. Wer alle Befehle
zugleich anwendet, erhält in solchen Fällen eine Fassung, die an keinem einzigen
Tage gegolten hat. Bislang tat das Erzeugnis eben dies, und zwar schweigend.
(1) Der Schlussartikel des Änderungsgesetzes wird gelesen (Inkrafttreten,
InkrafttretensLeser). Er ist von der Artikelwahl nicht erfaßt, weil er weder
eine Änderungsformel noch ein Stammgesetz nennt; maßgeblich ist der erste
Artikel hinter dem letzten ändernden, damit in einem Gesetzblatt mit mehreren
Gesetzen jedes seine eigene Schlussvorschrift erhält.
(2) Erkannt werden die Grundregel, der Vorbehalt zugunsten späterer Absätze, die
abweichende Anordnung für einzelne Artikel, Nummern, Buchstaben und Doppel-
buchstaben sowie das rückwirkende Inkrafttreten („mit Wirkung vom“). Das
Außerkrafttreten bleibt außer Betracht.
(3) Nennt der Wortlaut kein bestimmtes Datum, sondern knüpft an die Verkündung an,
so wird keines erfunden: Es bleibt beim Wortlaut, und die betroffenen Befehle
gelten als am Stichtag bereits wirksam. Der Umstand wird ausgewiesen.
(4) Jeder Befehl wird der besondersten Anordnung zugeordnet, die ihn erfaßt; im
übrigen gilt die Grundregel. Zugeordnet wird über die Herkunft des Befehls
(Artikel und Gliederungspfad).
(5) Es wird der Schalter „--stichtag“ eingeführt, dem im Vordruck der Browser-
fassung das Feld „Stichtag“ entspricht. Mit ihm ergibt sich die an jenem Tage
geltende Fassung; die noch nicht in Kraft getretenen Befehle bleiben unange-
wandt und werden gesondert ausgewiesen (Status NICHT_IN_KRAFT, Grund
NOCH_NICHT_IN_KRAFT).
(6) Ohne Stichtag bleibt es bei der Anwendung aller Befehle. Tritt das Gesetz
jedoch gestaffelt in Kraft, so wird dies unter Angabe der Wortlaute gerügt;
ferner weist der Vorspann der Synopse das Inkrafttreten und den etwa gewählten
Stichtag aus.
(7) Die Ausdrucksweise der ausgeschriebenen Daten wird in einer gemeinsamen Klasse
(DeutschesDatum) zusammengefaßt; die Altersrüge bedient sich fortan derselben.
(8) Der Prüfbestand umfasst dreihundertachtundvierzig Prüfungen.
Artikel 6
Beseitigung dreier benannter Mängel
Die nachstehenden drei Mängel waren in den Prüfungen einzeln begründet festge-
halten. Sie sind sämtlich allgemeiner Natur und nicht Eigenheiten ihrer Belegfälle.
(1) Auch eine Aufhebung räumt eine Bezeichnung. Die Ordnung der Anwendungs-
schritte kannte bislang allein Umnummerierungen als Räumende. Im Gebäude-
energiegesetz (§ 108 Absatz 1) macht ein Punkt der Kaskade aus den bisherigen
Nummern 4 bis 6 die Nummern 8 bis 10, während ein anderer die bisherige
Nummer 9 aufhebt; die Aufhebung suchte danach eine Nummer 9, die inzwischen
eine andere Einheit war. Sie läuft fortan vor der Umnummerierung. Dass eine
Aufhebung mitunter einen Platzhalter hinterlässt und dann nichts freigibt,
steht erst am Bestand fest und schadet nicht: Vorrang erhält sie nur gegenüber
Schritten, die dieselbe Bezeichnung neu vergeben.
(2) Ein Zwischentitel ist kein Teil des vorangehenden Absatzes. Eine Zeile, die
auf einen Doppelpunkt endet, keine Absatzbezeichnung trägt und der ein
bezeichneter Absatz folgt, bildet fortan einen eigenen, bezeichnungslosen
Absatz (LandesRechtTextParser). Bislang wurde sie dem vorangehenden Absatz
zugeschlagen; dessen Text endete dann nicht dort, wo er endet, und die
Anweisung „In Absatz 4a wird der Punkt am Ende durch ein Semikolon ersetzt“
fand ihren Punkt nicht.
(3) Neu eingesetzter Wortlaut erbt die amtliche Satzzählung (Satznummerierung).
Führt das Stammgesetz sie, so trägt der aus dem Gesetzblatt zitierte Text sie
gleichwohl nicht — sie gehört zur Fassung, nicht zum Verkündungstext.
Angefasst wird nur, was angefasst werden muss: ein geänderter Absatz, der
keine Zählung trägt, aus mehr als einem Satz besteht und auf einer Zeile
steht; die Mehrzeiligkeit schließt Aufzählungen aus.
(4) Damit sind das Gebäudeenergiegesetz mit einhundertsiebzehn angewandten
Befehlen und zwei Resten (zuvor einhundertsechzehn und drei) und das Berliner
Allgemeine Sicherheits- und Ordnungsgesetz mit sämtlichen sechs Befehlen und
allen einhunderteinundsiebzig Normen gleich der amtlichen Nachfassung
ausgewiesen; die Beschlussempfehlung zum Gebäudeenergiegesetz steigt von
neunundsechzig auf siebzig angewandte Befehle.
Artikel 7
Aufnahme des brandenburgischen Landesrechts
(1) Als Belegfall wird das Erste Gesetz zur Änderung des Fraktionsgesetzes
(GVBl. I 2026 Nr. 12) aufgenommen. Alle vier Befehle werden angewandt; alle
vierundzwanzig Normen gleichen danach der amtlichen Nachfassung.
(2) Brandenburg ist das erste Land, dessen Portal keine Einseitenanwendung ist.
BRAVORS gibt seine Vorschriften als gewöhnliches HTML aus und führt unter
„Änderungshistorie“ jede Fassung einzeln; Vor- und Nachfassung entstammen
damit derselben Quelle. Die Hefte lassen sich am Dokumententitel des PDF
einordnen.
(3) Beim Aufbereiten sind drei Eigenheiten zu beachten, die in
„Brandenburg/SOURCES“ niedergelegt sind: Die Abschnittsbezeichnung steht im
Kopfelement vor der Überschrift; die Aufzählungen sind Listen, deren Marken
erst das Stilblatt erzeugt und die deshalb auszuschreiben sind; und an
ehemaligen Trennstellen führt das Portal vereinzelt Steuerzeichen mit, die
kein Bestandteil des Wortlauts sind.
(4) Ein allgemeiner Fund: Die Überschrift des Schlussartikels wird beim Lesen der
Inkrafttretens-Anordnung nicht mehr in deren Wortlaut aufgenommen. Ein Artikel
ohne Absatzbezeichnungen ist im ganzen ein Absatz, und auf das bloße Vorkommen
von „tritt“ ist dabei kein Verlass — die Überschrift „Inkrafttreten“ trägt es
selbst.
(5) Der Prüfbestand umfasst dreihundertneunundvierzig Prüfungen.
Artikel 8
Aufnahme des rheinland-pfälzischen Landesrechts
(1) Als Belegfall wird die Erste Landesverordnung zur Änderung der Ausbildungs-
und Prüfungsordnung für den Zugang zum dritten Einstiegsamt bei der
Unfallkasse (GVBl. 2026 Nr. 21) aufgenommen. Die Prüfung reicht bis zur
Befehlserkennung.
(2) Weiter reicht sie nicht, und der Grund liegt in der Quelle: Das
rheinland-pfälzische Landesrechtsportal führt keine früheren Gesamtausgaben.
Dasselbe gilt für das saarländische und das sachsen-anhaltische Portal. Ohne
Vorfassung lässt sich das Ergebnis nicht gegen die amtliche Nachfassung
halten. Das Änderungsblatt selbst ist frei zugänglich; die Verkündungs-
plattform des Landes verkündet seit dem 1. Juli 2026 elektronisch.
(3) Zwei allgemeine Funde sind dabei behoben worden:
a) Der Befehlserkenner nimmt fortan überall die Nebenform „die Worte“ neben
„die Wörter“ an. Ohne sie blieben sieben der dreiundzwanzig Befehle
unerkannt.
b) Der Seitenfuß des dortigen Gesetzblattes steht im Inhaltsstrom und
zerschneidet das Zitat einer Neufassung; er wird nunmehr wie die
Seitenfüße der Gesetzblätter Berlins, Thüringens und Baden-Württembergs
herausgeschnitten.
(4) Drei Idiome bleiben benannt offen: die Satzzeichen-Ersetzung im Verbund mit
einer Halbsatz-Anfügung („wird der Punkt durch einen Strichpunkt ersetzt und
folgender Halbsatz angefügt“), die Einleitung eines Satzes als Ziel („In der
Einleitung werden die Worte … ersetzt“) und die Verweisung auf einen anderen
Punkt desselben Artikels („Die Inhaltsübersicht wird entsprechend der
vorstehenden Nummer 8 Buchst. a geändert“).
(5) Für die Beschaffung des Portaltextes ist ein einfacherer Weg gefunden: Der
Text wird im Browser als Blob zum Herunterladen angeboten und gelangt so
unmittelbar als Datei in das Dateisystem, statt stückweise durch die
Textausgabe der Browsersteuerung zu gehen.
(6) Der Prüfbestand umfasst dreihundertfünfzig Prüfungen.
Artikel 9
Auslieferung als Phase des Baues
Die Auslieferung der Browserfassung lag bislang außerhalb des Baues: Ein Skript
(„deploy/cloudflare.sh“) rief nacheinander den Bau und das Hochladen. Die
gleichnamige Phase des Baues selbst war unbesetzt und hätte, gerufen, den Bau zum
Erliegen gebracht, weil das Erzeugnis kein Empfangsverzeichnis („distribution-
Management“) benennt.
(1) Das Ziel „deploy:deploy“ wird stillgelegt. Das Erzeugnis ist eine Anwendung,
keine Bibliothek; es geht in kein Maven-Verzeichnis, und seine Fassungs-
bezeichnung („${revision}“) ergäbe dort ohnehin kein brauchbares Erzeugnis-
modell. Das Ziel „install“ bleibt unberührt.
(2) Die freigewordene Phase nimmt im Profil „wasm“ den Aufruf von „wrangler
deploy“ auf. Hochgeladen wird allein das Verzeichnis, das die Phase „package“
auslieferfertig hinterlassen hat; welches es ist, sagt „wrangler.toml“.
Fortan baut und liefert ein einziger Aufruf aus:
JAVA_HOME=/pfad/zu/oracle-graalvm ./mvnw -Pwasm deploy
Die Prüfungen aus „webpaket.sh“ — sauberer Arbeitsbaum für den beizulegenden
Quelltext (AGPLv3 § 13) und die Grenze von 25 MiB je Datei — liegen dabei vor
dem Hochladen und halten den Lauf an, ehe etwas hinausgeht.
(3) Das Skript „deploy/cloudflare.sh“ entfällt; es wäre nach dem Vorstehenden nur
noch die Doppelung dreier Aufrufe. Der Handbuchtext (§ 15 Absatz 1) wird
entsprechend gefasst.
(4) Ohne das Profil „wasm“ liefert die Phase nichts aus und bricht auch nicht ab.
(5) Die Prüfung geht auf: „./mvnw deploy“ vermerkt „Skipping artifact deployment“
und läuft durch; „./mvnw -Pwasm deploy“ führt die Ausführung „cloudflare“ an
der Phase „deploy“ auf; „wrangler deploy --dry-run“ liest die dreizehn Dateien
des Auslieferungsverzeichnisses, ohne auszuliefern; „./mvnw verify“ besteht
mit dreihundertfünfzig Prüfungen.
════════════════════════════════════════════════════════════════════════════════
Fassung vom 23. August 2026,
zuletzt geändert durch die am 23. August 2026 vorgenommenen Änderungen
════════════════════════════════════════════════════════════════════════════════
Das Erzeugnis steht seit seinem ersten Tage unter der GNU Affero General Public
License; ausgesprochen war das indes nur an drei verstreuten Stellen — im
Lizenzvolltext „COPYING“, in einem Satz des Impressums und in einer Bemerkung der
Datei „.gitattributes“. Keine einzige Quelldatei nannte ihren Urheber oder ihre
Lizenz. Wer eine Datei für sich betrachtete — und so betrachtet sie jeder, der
sie übernimmt —, fand daran nichts.
Erschwerend tritt die Eigenart dieses Erzeugnisses hinzu: Sein Prüfbestand
besteht aus fünfundvierzig PDF-Dateien, fünf EPUB-Dateien und den XML-Fassungen
fremder Werke, nämlich der Gesetzblätter, Drucksachen und Entwürfe des Bundes und
der Länder. Deren Rechtsstellung — gemeinfrei nach § 5 UrhG, gleichwohl gebunden
an Änderungsverbot und Quellenangabe nach §§ 62 und 63 UrhG — war bislang nur
menschenlesbar in den „SOURCES“-Dateien niedergelegt. Sie ist nunmehr auch
maschinenlesbar erfasst, und zwar nach Herkunft geschieden.
Maßstab ist die REUSE-Spezifikation in der Fassung 3.3.
Artikel 1
Lizenzbezeichnung
(1) Der eigene Quelltext steht fortan unter „AGPL-3.0-or-later“, also unter der
Version 3 der Lizenz oder, nach Wahl des Empfängers, einer späteren Fassung.
Bislang sprach das Impressum von der „Version 3“ ohne Nachfolgeklausel.
(2) Die Angabe ist an allen Stellen dieselbe: im Impressum, im Fußzeilenverweis
der Startseite, in einem neu aufgenommenen „licenses“-Block der „pom.xml“ und
im Abschnitt „Lizenz“ des Handbuchs.
Artikel 2
Verzeichnis der Lizenztexte
(1) Das Verzeichnis „LICENSES“ nimmt die Wortlaute auf: „AGPL-3.0-or-later.txt“,
„Apache-2.0.txt“ für den unverändert mitgelieferten Maven-Wrapper und
„LicenseRef-AmtlichesWerk.txt“.
(2) „COPYING“ bleibt an seiner Stelle, tritt aber als symbolische Verknüpfung
auf. Der gewohnte Pfad trägt damit fort, ohne dass zwei Wortlaute
nebeneinander zu pflegen wären; die Prüfung übergeht Verknüpfungen, sodass
für den Lizenztext selbst keine sachfremde Lizenzangabe zu erfinden war.
Artikel 3
Amtliche Werke
(1) „LICENSES/LicenseRef-AmtlichesWerk.txt“ bezeichnet keine erteilte Lizenz,
sondern hält die gesetzliche Rechtslage fest: die Gemeinfreiheit nach § 5
Abs. 1 UrhG für Verkündungsblätter, Drucksachen und Plenarprotokolle, nach
§ 5 Abs. 2 UrhG für ministerielle Entwürfe und Synopsen, ferner das
fortbestehende Änderungsverbot und Gebot der Quellenangabe.
(2) Ausdrücklich festgehalten ist, dass die technische Aufbereitung durch die
Rechtsportale kein eigenes Recht am Text begründet und dass der Prüfbestand
kein „Corresponding Source“ im Sinne der AGPL ist.
(3) Maßgeblich für die Fundstelle der einzelnen Datei bleibt die Datei „SOURCES“
des jeweiligen Verzeichnisses; die Lizenzdatei nimmt sie in Bezug.
Artikel 4
Zuordnung im Einzelnen
(1) Dateien mit Kommentarsyntax tragen ihre Angabe in sich: zwei Zeilen
„SPDX-FileCopyrightText“ und „SPDX-License-Identifier“ im jeweils üblichen
Stil, vor dem vorhandenen erläuternden Kommentar und ohne diesen anzutasten.
Bei „index.html“ und den übrigen Seiten steht sie hinter der Typangabe, bei
„webpaket.sh“ und „cloudflare.sh“ hinter der Aufrufzeile, bei den
AsciiDoc-Dateien innerhalb des Dokumentenkopfes.
(2) Für Binärdateien, für JSON und für reinen Text ordnet „REUSE.toml“ zu. Der
Prüfbestand ist darin nach Herkunft geschieden: Bund (Verkündung und
Parlament), Bund (ministerielle Entwürfe), gesetze-im-internet.de nebst der
Aufbereitung durch die juris GmbH, sodann neun Länder je einzeln.
(3) Die selbst abgeleiteten Textfassungen („*-alt.txt“) tragen „AGPL-3.0-or-later
AND LicenseRef-AmtlichesWerk“: Der Wortlaut ist amtlich, die Aufbereitung —
Einrückung, Superskript-Satznummern, Gliederungsüberschriften — eigene
Arbeit.
(4) „mini-gii.xml“ und „.mvn/maven.config“ erhalten bewusst keine Kopfzeile,
sondern einen Eintrag in „REUSE.toml“: Ersteres liest der GiiXmlLoader,
Letzteres Maven vor jedem Bau, und beide sollen von der Auszeichnung
unberührt bleiben.
Artikel 5
Fortdauernde Prüfung
(1) Spotless pflegt die Kopfzeilen der Java-Dateien („licenseHeader“). Der Lauf
von „spotless:check“ ist an die Phase „verify“ gebunden und hält den Bau an,
sobald eine Quelldatei ohne Kopfzeile oder ohne die vereinbarte Formatierung
hinzukommt.
(2) Dabei hat sich ergeben, dass „src/wasm/java“ der Formatprüfung bislang
verborgen war: Das Verzeichnis tritt dem Quellbaum erst im Profil „wasm“ bei.
Die Quellverzeichnisse sind nunmehr ausdrücklich benannt; die beiden
Wasm-Klassen sind erstmals umformatiert worden.
(3) Ein Ausrollwerkzeug hinterließ mit „.wrangler“ ein Zwischenverzeichnis im
Arbeitsbaum; es ist fortan übergangen.
Artikel 6
Nachweis
(1) Die Prüfung meldet Konformität mit der Fassung 3.3 der Spezifikation:
einhundertvierundfünfzig von einhundertvierundfünfzig Dateien tragen Urheber-
und Lizenzangabe, keine Lizenz bleibt ungenutzt, keine fehlt.
(2) Dreihundertfünfundzwanzig Testfälle bestehen unverändert; am Verhalten des
Erzeugnisses ändert sich nichts.
(3) Das ausgelieferte Quelltextarchiv ist von sich aus konform, denn
„.gitattributes“ nimmt den Prüfbestand von ihm aus.
Artikel 7
Gestaltung der Browserfassung
Die Startseite trug bislang ein schmuckloses Kleid: Antiqua auf Weiß, eine
Spalte, drei dünn gerahmte Kästen. Das war sauber, aber austauschbar; es sah aus
wie ein Aufsatz und nicht wie das, was das Erzeugnis ist — eine Stelle, die
Änderungsbefehle abarbeitet und darüber Rechenschaft ablegt. Die Gestaltung folgt
fortan dem Vorbild des amtlichen Formblatts.
(1) Der Satzspiegel tritt als Bogen auf einer Unterlage auf: umrandet, auf
sechsundvierzig Halbgevierten Breite, auf schmalen Geräten ohne Rand. An die
Stelle der Antiqua tritt eine Systemgroteske; Kennungen und Feldbezeichner
stehen in gesperrten Versalien.
(2) Das Farbgerüst wird um „Papier“ (Unterlage), „Raster“ (Formularlinien),
„Kasten“ (Feldgrund) und „Amt“ ergänzt. Das Amtsrot führt das Auge zu den
Kennungen, den Feldziffern und dem Tastaturhalt; die bisherige Bedeutung von
Rot und Grün — warnen und bestätigen — bleibt unberührt, und keine Aussage
ruht auf der Farbe allein.
(3) Der Kopf der Seiten ist ein Briefkopf: links die ausstellende Stelle mit
ihrer Langbezeichnung, rechts die Kennung des Vordrucks als Verzeichnis
(„Formblatt ÄG-1“, „Vorgang“ oder „Anlage“, „Geltung: nichtamtlich“). Die
Kennung steht im Text und nicht im Stilblatt, damit sie sich auswählen und
vorlesen lässt; der Zusatz „nichtamtlich“ hält fest, dass die amtliche
Anmutung keine amtliche Herkunft behauptet. Darunter läuft die Doppellinie,
kräftig in Amtsrot über dünn in Rasterfarbe.
(4) Das Formular wird zum Feldblock: „fieldset“ mit der Legende „Antrag auf
Erstellung einer Synopse“ als schwarzem Balken im oberen Rahmen, darin drei
gerahmte Felder. Ihre Ziffern entstehen aus einem Zähler des Stilblattes und
stehen im Steg links, sodass die Auszeichnung der Felder unangetastet bleibt.
Der Dateiwähler trägt über „::file-selector-button“ die Form des Knopfes in
der Umkehrung; der Absendeknopf erhält eine Prägekante und fährt beim Drücken
in seinen eigenen Schatten.
(5) Der Hinweis für abgeschaltetes JavaScript und der Haftungsausschluss treten
als „aside“ mit eigener Überschrift („Hinweis“, „Haftungsausschluss“) auf;
ihr Wortlaut bleibt unverändert. Die Meldung führt ihr Zeichen nunmehr im
Steg mit — ✓ für die fertige, ! für die fehlgeschlagene Auswertung —, damit
der Zustand auch ohne Farbe erkennbar ist. Das Zeichen setzt das Stilblatt,
nicht der Text, weil die Textverarbeitung den Text ersetzt.
(6) Neu hinzu treten zwei Dinge, die bisher gänzlich fehlten: eine sichtbare
Fokusanzeige für den Tastaturgang und ein Druckbild. Gedruckt entfallen
Unterlage, Bogenrand, Merkblatt und Knopf; die Linien stehen in Schwarz.
(7) Das Zeichen der Seite (favicon.svg) übernimmt Rahmen und Schrift des neuen
Gerüstes.
Artikel 8
Unberührte Bestandteile
(1) Sämtliche Angriffspunkte der Textverarbeitung bleiben wörtlich erhalten:
„#synopse-formular“, „#stamm“, „#aenderung“, „#vollstaendig“, „#meldung“
nebst den Zustandsklassen sowie der eine Knopf des Formulars. „app.js“,
„worker.js“ und der Java-Teil sind nicht angetastet.
(2) Die von „HtmlRenderer“ erzeugte Synopse behält ihr eigenes Aussehen; ihre
Angleichung bleibt einem späteren Zeitpunkt vorbehalten.
(3) Aufgenommen sind ferner die Beschreibungsverweise „aria-describedby“ auf die
Erläuterungssätze der Felder und die Ansage „aria-live“ für die Meldung, die
ihren Text bislang stumm wechselte.
(4) Die Prüfung nach der REUSE-Spezifikation meldet unverändert
einhundertvierundfünfzig von einhundertvierundfünfzig Dateien; dreihundert-
fünfundzwanzig Testfälle bestehen fort.
Artikel 9
Gestaltung der Synopse
Mit Artikel 7 trug die Aufgabeseite das Gewand eines amtlichen Formblatts, das
Erzeugnis aber noch sein altes: Antiqua auf Weiß, kein Briefkopf, kein Fußsteg,
ein anders benanntes Farbgerüst. Wer das Formular ausfüllte und dann die Synopse
öffnete, sah zwei Dokumente zweier Häuser. Sie treten fortan als Vorgang und
Erzeugnis desselben Hauses auf: der Antrag als Formblatt ÄG-1, die darauf
ergehende Synopse als Formblatt ÄG-2.
(1) Das Farbgerüst des HtmlRenderers wird auf die Marken der Aufgabeseite
gebracht („--rand“ wird „--raster“, „--dezent“ wird „--muted“) und um
„--papier“, „--kasten“ und „--amt“ ergänzt. Dass es zweimal geführt wird,
ist unvermeidlich und nunmehr an beiden Stellen vermerkt: Die Synopse wird
aus einem blob:-Verweis geöffnet und im Befehlszeilenbetrieb als einzelne
Datei abgelegt; sie kann kein fremdes Stilblatt einbinden.
(2) Die Schrift ist geteilt. Der Vordruck — Briefkopf, Kennung, Überschriften,
Spaltenköpfe, Kästchen, Fußsteg — steht in der Groteske, der Wortlaut der
Normen in der Antiqua. Amtskopf und Vorschrift sind zweierlei, im
Gesetzblatt wie hier.
(3) Der Kopf trägt denselben Aufbau wie die Aufgabeseite: links die ausstellende
Stelle mit ihrer Langbezeichnung, rechts die Kennung („Formblatt ÄG-2“,
„Stammgesetz“, „Erstellt“, bei Entwürfen „Stand: Entwurfsfassung“, „Geltung:
nichtamtlich“), darunter die Doppellinie und der Vorspann mit Herkunft und
Statistik. Die Wendung „erstellt am … mit ÄndGgner“ wandert in den Fußsteg,
damit das Datum nicht zweimal dasteht.
(4) Die beiden Felder des Spaltenkopfes treten als schwarze Balken auf wie die
Legende des Feldblocks; ebenso die Überschriften der Abschnitte „Geänderte
Gliederungs-Überschriften“ und „Manuell prüfen“.
(5) Die alte Fassung liegt auf dem Kastenton wie ein Durchschlag, die neue auf
Bogenweiß. Beim Springen zwischen den Spalten ist damit ohne Hinsehen klar,
wo man steht; die Hinterlegungen der Änderungen heben sich von beiden
Gründen weiterhin ab.
(6) Jede Norm trägt im Steg links eine Randziffer, wie der Vordruck die
Feldziffer. Sie entsteht aus einem Zähler des Stilblattes und macht die
Abschnitte überdies zitierbar.
Artikel 10
Drei Mängel, die dabei zutage traten
(1) Der Spaltenkopf klebte (position: sticky) innerhalb des Kopfblocks. Sein
Klebebereich endete deshalb mit dem Vorspann, sodass er beim Blättern
alsbald verschwand. Er steht nunmehr mit der Gegenüberstellung in einem
eigenen Block: Der Bereich reicht über alle Normen und endet vor dem
Abschnitt „Manuell prüfen“, der keine Spalten hat.
(2) Auf schmalen Geräten standen zwei Spalten Gesetzestext zu je einem Anteil
nebeneinander; lesbar war das nicht. Unterhalb von sechzig Halbgevierten
wird gestapelt, und da dort der Spaltenkopf nichts mehr trägt, beschriftet
sich jede Spalte selbst.
(3) Die Druckblöcke beider Stilblätter setzten nur einen Teil des Farbgerüstes
zurück. Da „prefers-color-scheme“ im Druck fortgilt, wäre aus einem dunkel
eingestellten Browser heraus die alte Spalte als schwarzer Block aus dem
Drucker gekommen. Beide Blöcke setzen nunmehr sämtliche Marken.
(4) Nachgewiesen an zwei wirklichen Läufen der Befehlszeilenfassung: dem
verkündeten Dritten Gesetz zur Änderung des UWG (19 Befehle, 0 manuell,
6 Normen) und dem Regierungsentwurf zum AGG (23 Befehle, 1 manuell,
14 Normen, Entwurfsfassung). Dreihundertsiebenundzwanzig Testfälle bestehen,
darunter zwei neue für Kennung, Fußsteg und Entwurfsausweis.
Artikel 11
Berichtigung der Gestaltung nach dem Vorbild eines wirklichen Vordrucks
Die Artikel 7 und 9 hatten sich am Begriff des amtlichen Formulars orientiert,
nicht an einem solchen. Der Abgleich mit einem wirklichen Bundesvordruck — dem
„Antrag auf Erteilung einer Bescheinigung für den Lohnsteuerabzug bei erweiterter
unbeschränkter Einkommensteuerpflicht“ — hat ergeben, dass die bisherige Fassung
in fast jedem Merkmal danebenlag. Sie wird berichtigt.
(1) Maßgeblich ist eine einzige Regel, die im Muster sogar ausgeschrieben steht:
„Weiße Felder bitte ausfüllen“. Grau ist, was die Stelle gedruckt hat —
Beschriftungen, Leitspalten, Abschnittsköpfe, die Verfügung am Ende; weiß
ist, was der Antragsteller beiträgt. Bisher war es umgekehrt: weißer Bogen
mit blass getönten Kästen. Diese Regel trägt fortan die gesamte Gestaltung
und ist im Vordruck selbst benannt.
(2) Schmuckfarbe entfällt ersatzlos. Das Amtsrot der Artikel 7 und 9 war
erfunden; wirkliche Bundesvordrucke führen keine. Rot und Grün treten allein
dort auf, wo sie etwas bedeuten: Fehler und Bestätigung in der Verfügung,
gestrichener und eingefügter Wortlaut in der Synopse.
(3) Die Zellen stoßen aneinander, ohne Abstand und ohne Rundung, verbunden durch
schwarze Haarlinien. Die Rahmen sind halbiert — außen oben und links, an den
Zellen unten und rechts —, damit zwischen zwei Zellen eine einzige Linie
steht und nicht zwei.
(4) Die Beschriftung steht klein im Feld oben links, die Erläuterung in noch
kleinerer Schrift in Klammern dahinter; darunter bleibt der Platz für die
Eintragung. Die fette Zeile über einem Eingabefeld nebst gesondertem
Hinweisabsatz entfällt.
(5) Links läuft die Leitspalte mit den Abschnittsbezeichnungen („Angaben zum
Stammgesetz“, „Angaben zu den Änderungen“, „Antragstellung“). Auf schmalen
Geräten tritt sie über ihre Felder, als voller Beschriftungsstreifen — eine
Form, die das Muster ebenfalls kennt.
(6) Das Ankreuzfeld ist ein Kästchen vor dem Text und wird angekreuzt, nicht
angehakt.
(7) Der Abschnitt „Zur Beachtung:“ nimmt auf, was bisher über Tagline,
Haftungsabsatz und noscript-Kasten verstreut war.
(8) Die Verfügung der Zentralstelle tritt an die Stelle der bloßen Meldung: ein
grau umrandeter Abschnitt mit zentrierter Überschrift, wie im Muster die
„Verfügung des Finanzamts“. Er steht auch dann schon da, wenn er noch leer
ist, und trägt dann den Vermerk, dass er nach Absenden ausgefüllt wird; ein
Vordruck zeigt seine Abschnitte, bevor sie ausgefüllt sind.
(9) Die Kennung wandert aus dem gerahmten Verzeichnis oben rechts in die
Fußecken: links die Vordrucknummer, rechts der Ausgabestand, beide winzig
und ohne Zierrat. Impressum und Datenschutz führen ÄG-1/A und ÄG-1/B.
(10) Die Schrift ist Arial in dreizehn Achteln eines Gevierts, die Beschriftungen
in elf; Sperrung und Versalien entfallen bis auf die Kästchen der Synopse.
(11) Die Synopse folgt demselben Gerüst: Der Vorspann ist ein
Beschriftungsstreifen aus grauen Bezeichnungen und weißen Eintragungen, die
Spaltenköpfe und die Abschnittsüberschriften sind graue Streifen statt
schwarzer Balken, die Randziffer sitzt in einem Kästchen, und der Fußsteg
trägt Vordrucknummer und Ausgabestand in den Ecken.
(12) Dabei ist ein weiterer Mangel behoben worden: Der Grund der Leitspalte hing
am Block und nicht an der Zelle; im Druck fällt die Fläche des Blocks weg,
sodass die Leitspalte weiß herausgekommen wäre. Das Grau ist keine Zier — es
sagt, welche Felder auszufüllen sind — und wird deshalb ausdrücklich
mitgedruckt.
(13) Dreihundertsiebenundzwanzig Testfälle bestehen; die beiden Prüffälle des
Artikels 9 sind auf den neuen Vorspann umgestellt.
Artikel 12
Die Hinterlegung der Änderungen trägt allein
Die Synopse zeichnete jede Änderung zweifach aus: durch Farbe (rot heißt weg,
grün heißt hinzu) und durch Form (durchgestrichen gegen unterstrichen). Die
Unterstreichung der Einfügungen ist als störend beanstandet worden — sie
zerschneidet die Unterlängen der Antiqua und lässt eingefügte Wortstücke wie
Verweise aussehen. Sie entfällt. Damit aber fällt die Stütze weg, auf der das
Farbgerüst bei Farbfehlsichtigkeit ruhte, und diese Stütze war nicht entbehrlich:
Rot gegen Grün ist gerade das Paar, das bei Protanopie und Deuteranopie
zusammenfällt. Die Hinterlegung muss deshalb für sich allein tragen können,
und dazu genügt das bisherige Paar nicht.
(1) An die Stelle des Grüns tritt ein Blau. Blau bleibt Blau, wo Rot zu Beige
wird, und ist zugleich merklich dunkler; die beiden Hinterlegungen sind
damit nach Farbort wie nach Helligkeit geschieden. Die Werte lauten hell
„#ffdad6“ gegen „#a8ccff“, dunkel „#5a2320“ gegen „#1b3f74“; das Druckbild
führt die hellen Werte, weil die Voreinstellung des Browsers in den Druck
fortgilt.
(2) Die Notwendigkeit ist gemessen und nicht behauptet. Nach Simulation der drei
Formen der Dichromasie beträgt der Farbabstand der beiden bisherigen
Hinterlegungen bei Deuteranopie ΔE = 4,8 im hellen und ΔE = 4,4 im dunklen
Gerüst — sie waren dort ununterscheidbar. Das neue Paar hält in allen drei
Formen ΔE zwischen 24 und 58 und dazu ein Helligkeitsverhältnis von 1,10
bis 1,44. Der Text steht in allen vier Fällen über dem Verhältnis 4,5 zu 1
der Zugänglichkeitsrichtlinien (6,85 bis 7,75).
(3) Die Unterstreichung der Einfügungen entfällt. Sie ausdrücklich abzustellen
(„text-decoration: none“) ist geboten und nicht überflüssig: Sie steht im
Stilblatt des Browsers und bliebe sonst stehen — ein Mangel, der erst der
Ansicht des Erzeugnisses und nicht dem Quelltext anzusehen war.
(4) Die Durchstreichung der Streichungen bleibt. Sie ist beim gestrichenen Wort
die übliche Auszeichnung, stört den Lesefluss nicht und trägt allein den
Schwarzweiß-Ausdruck.
(5) Alte und neue Fassung stehen fortan auf demselben weißen Feld. Der
Durchschlag-Raster unter der alten Spalte wiederholte nur, was der
Spaltenkopf ohnehin sagt, und mindert den Abstand, den die Hinterlegungen
zum Grund haben. Im Druckbild entfällt damit auch die Anweisung, den Grund
der alten Spalte mitzudrucken.
(6) Die Kästchen folgen dem Farbgerüst: „neu“ wird blau. Der linke Rand des
Entwurfshinweises bleibt rot.
(7) Nachgewiesen ist die Wirkung nicht am Quelltext, sondern an der erzeugten
Datei: Für die Synopse des Bayerischen Jagdgesetzes (154 Befehle, 54
geänderte Normen) ist im hellen, im dunklen und im Druckgerüst erhoben
worden, dass keine der achthundertachtzig Einfügungen unterstrichen ist und
beide Spalten denselben Grund tragen. Dreihundertsiebenundzwanzig Testfälle
bestehen fort.
Artikel 13
Das Handbuch auch in Markdown
Das Handbuch lag allein als AsciiDoc vor („README.adoc“). Wer den Quelltext über
ein Verzeichnis betrachtet, das nur Markdown darstellt, sah es als Rohtext.
(1) Die Übersetzung liegt fortan als „README.md“ bei. Sie gibt den Wortlaut des
Handbuchs unverändert wieder; übersetzt sind allein die Auszeichnungen:
Abschnittsüberschriften, Quelltextblöcke, Verweise, Aufzählungen und die
Begriffsverzeichnisse des § 2, des § 6 Abs. 2, des § 10, des § 16 Abs. 2 und
des Lizenzabschnitts.
(2) Der Attributkopf des AsciiDoc entfällt, denn Markdown kennt ihn nicht; an
seine Stelle tritt ein Inhaltsverzeichnis aus Verweisen auf die siebzehn
Paragraphen und den Lizenzabschnitt.
(3) Die Angaben nach der REUSE-Spezifikation stehen als HTML-Kommentar im Kopf
der Datei. Die Prüfung meldet unverändert Konformität mit der Fassung 3.3:
einhundertfünfundfünfzig von einhundertfünfundfünfzig Dateien tragen Urheber-
und Lizenzangabe.
(4) Die Folge der Absatzziffern ist Zeile für Zeile gegen die AsciiDoc-Fassung
abgeglichen worden und stimmt überein; das schließt die im § 14 vorgefundene
doppelte Zählung der Absätze 6 und 7 ein, die bewusst unangetastet bleibt,
weil das Handbuch selbst sie führt.
(5) Die AsciiDoc-Fassung entfällt sogleich; zwei Wortlaute desselben Handbuchs
nebeneinander zu pflegen wäre eine Fehlerquelle. Die beiden Verweise des
Bauwerks — die Bauanleitung im beigelegten Quelltextarchiv
(„deploy/webpaket.sh“) und der Hinweis auf den Abschnitt „Ausrollen“
(„deploy/nginx-aendggner.conf“) — sind auf „README.md“ nachgezogen. Die
Fundstellen in diesem Verzeichnis bleiben als geschichtliche Angabe stehen.
Artikel 14
Neue Anschrift der fortlaufenden Quelltextquelle
Die fortlaufende Quelltextquelle ist von Gerrit („gerrit.benkard.de/plugins/
gitiles/aendggner“) nach „https://git.benkard.de/mulk/aendggner“ umgezogen.
(1) Die Anschrift ist an allen fünf Stellen nachgezogen: im Handbuch (§ 3
Abs. 2), im Feld „SPDX-PackageDownloadLocation“ der „REUSE.toml“, in der
Zeile „Fortlaufend“ des beigelegten „quelltext-fassung.txt“
(„deploy/webpaket.sh“) sowie in den Fußzeilen der Startseite und des
Impressums.
(2) Im Impressum trug der Verweis bislang die Beschriftung „Gerrit“; sie lautet
fortan „Git“, denn sie benennt nunmehr keine bestimmte Oberfläche mehr.
(3) Die Nennung nach AGPLv3 § 13 bleibt damit erreichbar; das ist der Zweck der
Angabe, nicht bloß ihre Zier.
Artikel 15
Beschaffung konsolidierter Landesfassungen aus Einseitenanwendungen
(1) Die Landesrechtsportale, die auf der Anwendung der juris GmbH beruhen, geben
einer Skriptabfrage nur ihre rund 5,4 Kilobyte große Anwendungshülle aus.
Sie galten deshalb bislang als unerreichbar. Einem Browser geben sie den
Wortlaut; über eine Browsersteuerung ist er, Werk für Werk und nicht im
Massenabzug, auszulesen.
(2) Maßgeblich ist die Gesamtausgaben-Liste der Dokumentansicht. Sie führt jede
Fassung mit ihrem Geltungszeitraum und macht sie unter einer datierbaren
Anschrift der Form „…/document/aiz-jlr-<Kennung>@<JJJJMMTT>“ abrufbar.
Vor- und Nachfassung eines Änderungsvorgangs sind damit unmittelbar
bezeichenbar; das Ergebnis der Anwendung wird gegen die Nachfassung prüfbar.
(3) Zwei Fallstricke sind vermerkt: Die Seite baut sich nachlädig auf, sodass
ein Auszug des sichtbaren Bereichs mitten im Gesetz abbricht — maßgeblich
ist der Textinhalt des Dokumentbehälters. Und die Portale führen im Kopf
ihrer Seiten einen Vorbehalt zum Text- und Data-Mining; für gemeinfreie
amtliche Werke nach § 5 des Urheberrechtsgesetzes kann er keine Wirkung
entfalten.
(4) Herkunft und Aufbereitung im einzelnen verzeichnet die neue Datei
„src/test/resources/sampledata/Hessen/SOURCES“.
Artikel 16
Der hessische Belegfall
(1) Aufgenommen werden die konsolidierte Fassung der Verordnung zur Bestimmung
verkehrsrechtlicher Zuständigkeiten in der Gültigkeit vom 1. Januar bis zum
3. Februar 2026 („StVRZustV-alt.txt“) sowie, allein als Prüfmaßstab, die
Fassung ab dem 4. Februar 2026 („StVRZustV-neu.txt“).
(2) Der Belegfall („EndToEndTest.verkehrsZustVAendVOHessen“) reichte bislang nur
bis zur Befehlserkennung. Er umfasst nunmehr die Anwendung: Alle 21 Befehle
des Artikels 1 der Elften Änderungsverordnung werden angewandt, keiner
bleibt zur Prüfung von Hand, und jede der 52 Normen gleicht danach
zeichengenau der amtlichen Nachfassung.
Artikel 17
Normköpfe ohne Überschrift und ausgeschriebene Gliederungs-Ordinale
Der Klartext-Parser des Landesrechts (LandesRechtTextParser) wird wie folgt
geändert:
1. Der Normkopf darf ohne Überschrift stehen. Verordnungen führen ihre
Paragraphen vielfach ohne Titel; eine Zeile, die aus nichts als der
Bezeichnung besteht, ist dann der Normkopf. Ein Querverweis steht nie allein
auf einer Zeile, und die Monotonieprobe sichert zusätzlich ab.
2. Es wird die Gliederungs-Überschrift mit ausgeschriebenem Ordinale und
nachgestelltem Schlüsselwort aufgenommen („Erster Teil“,
„Achtundzwanzigster Teil“). Damit ein Satz, der zufällig so beginnt, nicht
als Überschrift gilt, hat ihr Titel dieselbe Probe zu bestehen wie ein
Normtitel: großgeschriebener Anfang, kein Schlusspunkt.
3. Ein Aufzählungsglied, dessen Text auf einer Konjunktion endet („und“,
„oder“, „sowie“), gilt nicht mehr als Unter-Überschrift. Die
Stellungsprobe schlug bei ihm gerade deshalb an, weil ihm das nächste Glied
folgt. Zwei Glieder des § 17 der hessischen Verordnung waren so bislang der
Norm entzogen.
Artikel 18
Streichung der Absatzbezeichnung, Platzhalter und Zwischenraum
Der Befehlsanwender (BefehlAnwender) wird wie folgt geändert:
1. Die Anweisung „Die Absatzbezeichnung „(1)“ wird gestrichen“ nimmt dem
Wortlaut fortan seine Nummer und lässt ihn im Übrigen unberührt. Bislang
beseitigte sie den Absatz und hinterließ einen nummerierten Platzhalter;
das ist der Inhalt der Aufhebung über einen Absatz-Lokator, nicht der
Streichung einer Bezeichnung.
2. Ein Platzhalter „(weggefallen)“ hält einen Platz nur dort, wo ihm eine
weitere Einheit derselben Art folgt, deren Bezeichnung er schonen soll.
Steht die aufgehobene Einheit am Ende — auch dann, wenn ihr nur weitere
Platzhalter folgen —, so entfällt sie ganz. Dasselbe gilt für einen
aufgehobenen Absatz am Ende einer Norm, die keine Absatzzählung mehr führt.
3. Tritt an die Stelle eines Satzzeichens ein Wort oder ein Klammerzusatz, so
gehört ein Leerzeichen davor. Die Anweisung „das Komma wird durch das Wort
„und“ ersetzt“ führte sonst auf „…Fachkräfte)und“. Die bisherige, auf
Klammerzusätze am Einheitsende beschränkte Regel geht darin auf.
4. Der Befehlserkenner spannt eine Bereichs- oder Koordinationsaufhebung
fortan absteigend auf. Ob eine aufgehobene Einheit einen Platzhalter
hinterlässt, entscheidet sich nach Nummer 2 am Bestand, der ihr folgt; von
hinten aufgehoben, sieht jede Einheit den endgültigen Bestand.
Artikel 19
Zwei stille Mängel
(1) An zwei Stellen wurde „List.remove“ ein geboxter Index übergeben. Der Aufruf
band an die Überladung, die ein gleiches Element sucht, fand keines und
entfernte nichts — ohne Fehler zu melden. Betroffen war neben der Aufhebung
eines Absatzes auch dessen Neufassung durch mehrere Absätze: Der alte Absatz
blieb dort neben den neuen stehen.
(2) Der Mangel nach Absatz 1 ist an beiden Stellen durch Entboxung des Index
behoben.
Artikel 20
Der schleswig-holsteinische Belegfall
(1) Aufgenommen werden die konsolidierten Fassungen der Gemeindeordnung und der
Kreisordnung für Schleswig-Holstein, je in der Gültigkeit vom 16. August 2025
bis zum 30. März 2026 („GO-SH-alt.txt“, „KrO-SH-alt.txt“) sowie, allein als
Prüfmaßstab, die Fassungen ab dem 31. März 2026.
(2) Der Belegfall („EndToEndTest.kommunalrechtAendGSchleswigHolstein“) reichte
bislang nur bis zur Befehlserkennung. Er umfasst nunmehr die Anwendung auf
beide Stammgesetze — der erste Fall, in dem ein Änderungsgesetz deren zwei
fortschreibt. Beide gleichen danach Norm für Norm der amtlichen Nachfassung,
die Gemeindeordnung in 167, die Kreisordnung in 86 Normen.
(3) Zwei Eigenheiten des Portalsatzes waren zu behandeln. Die Sachnummer steht
dort abgetrennt („§ 57 c“); kanonisch ist „§ 57c“, und ohne diesen Handgriff
wären zehn Paragraphen der Gemeindeordnung dem Gesetz entgangen. Der
Handgriff gehört zur Aufbereitung und ist in „SOURCES“ verzeichnet.
(4) Die zweite Eigenheit betrifft den Quelltext und ist unter Artikel 21 geregelt.
Artikel 21
Bindestrich und Gedankenstrich im Klammerzusatz
Der Klartext-Parser des Landesrechts (LandesRechtTextParser) trennt Kurztitel und
Abkürzung des Klammerzusatzes („Gemeindeordnung – GO –“) fortan auch dann, wenn
statt des Gedankenstrichs ein Bindestrich steht; so setzen ihn die
Landesrechtsportale. Verwechslungsfrei ist er, weil er an dieser Stelle von
Leerraum umgeben ist — innerhalb eines Namens steht ein Bindestrich stets ohne.
Ohne diese Ergänzung blieb der Kurztitel ungetrennt, der Einleitungssatz des
Änderungsgesetzes fand sein Ziel nicht, und es wurde kein Artikel gewählt.
Artikel 22
Anlagen als eigene Normen
Der Klartext-Parser des Landesrechts (LandesRechtTextParser) wird wie folgt
geändert:
1. Es wird der Normkopf einer Anlage oder eines Anhangs aufgenommen, nummeriert
(„Anlage 2“) wie unnummeriert-benannt („Anlage“, „Anhang“). Die
Einzelnormbezeichnung lautet genau so, wie das gii-XML sie führt, damit die
Auflösung nach „Stelle.anlagenEnbez“ sie unverändert trifft.
2. Vom ersten Anlagen-Normkopf an ist alles Folgende Inhalt der Anlagen. Ihre
inneren Überschriften gliedern nicht das Gesetz, und ein Paragraph, den sie
zitieren, eröffnet keine Norm; nur eine weitere Anlage tut das.
Artikel 23
Der Berliner Belegfall, zur Hälfte
(1) Aufgenommen wird die konsolidierte Fassung des Gesetzes zur Errichtung eines
Landesamtes für Flüchtlingsangelegenheiten und Unterbringung in der
Gültigkeit vom 16. April bis zum 11. Juni 2026 nebst der Nachfassung als
Prüfmaßstab. Der Artikel 2 des Änderungsgesetzes wird vollständig angewandt;
alle fünf Normen gleichen danach der amtlichen Fassung.
(2) Der Artikel 1 (Allgemeines Sicherheits- und Ordnungsgesetz) bleibt bei der
Erkennung. Fünf seiner sechs Befehle zielen auf Einheiten der Anlage, die
dort als Überschriften gesetzt sind („Nummer 6“, „Nummer 23“, „Nummer 31“),
während der Stellenauflöser eine Aufzählungsmarke „6.“ im Text der Anlage
sucht — die dort vielfach vorkommt. Belegt ist das durch die Gegenprobe:
Werden die Überschriften versuchsweise in Marken umgeschrieben, steigt die
Zahl der angewandten Befehle von zwei auf drei; mehrdeutig bleibt der Rest.
(3) Die Nummern einer Anlage brauchen hiernach einen eigenen Rang zwischen Norm
und Absatz. Solange er fehlt, wird die Stammfassung nicht beigelegt; ihr
Bezugsweg ist in „Berlin/SOURCES“ verzeichnet und führt in zwei Abrufen
wieder dorthin.
(4) Ein zweiter Befund ist dort gleichfalls festgehalten: Das Berliner Portal
setzt die amtlichen Satznummern nicht als Superskripte, sondern als
angeklebte Ziffern („(2) 1Gegen einen …“).
Artikel 24
Zeitrichtige Stammfassungen des Bundesrechts
(1) Aufgenommen werden die konsolidierten Fassungen des Gebäudeenergiegesetzes
und des Infektionsschutzgesetzes in dem Stand, den der Einleitungssatz des
jeweiligen Änderungsgesetzes bezeichnet („BJNR172810020-2023.xml“,
„BJNR104510000-2020.xml“). Herkunft ist der Wayback-Schnappschuss des
amtlichen Archivs „xml.zip“; Fundstelle, Schnappschusstag und Abrufweg sind
in den Dateien „SOURCES“ der beiden Verzeichnisse niedergelegt.
(2) Die bisherigen, heute gültigen Fassungen bleiben unberührt. Sie bezeugen den
Fall, dass das Stammgesetz jünger ist als das Änderungsgesetz, und dienen
weiterhin als Belegfall dieser Lage.
(3) Damit sind die beiden größten Restzahlen des Prüfbestands erstmals gegen ein
Sollergebnis gehalten. Sie beruhten fast ausschließlich auf dem Altersunter-
schied der Fassungen: beim Gebäudeenergiegesetz einundfünfzig Reste bei
achtundsechzig angewandten Befehlen, beim Infektionsschutzgesetz sieben-
undzwanzig bei achtundvierzig. Gegen den zeitrichtigen Stamm sind es
hundertsechzehn angewandte Befehle und drei Reste beziehungsweise fünf-
undsiebzig angewandte Befehle und kein Rest.
Artikel 25
Wortersetzung nur an Wortgrenzen
(1) Nennt ein Befehl ein Wort, so ist dieses Wort gemeint und nicht der gleich-
lautende Anfang eines längeren. Die Ersetzung, die Streichung und die
Fundstellenprüfung (BefehlAnwender) suchen ihren Zieltext daher nur noch
dort, wo er als Wort steht.
(2) Die Grenze wird nur verlangt, soweit der Zieltext selbst mit einem Buchstaben
oder einer Ziffer beginnt oder endet; ein Satzzeichen, eine Klammer oder ein
Bindestrich am Rand bringt seine Grenze schon mit.
(3) Anlass war § 36 des Infektionsschutzgesetzes: Die Anweisung, „jeweils das
Wort ‚schwerwiegende‘ durch das Wort ‚bedrohliche‘ und das Wort
‚schwerwiegender‘ durch das Wort ‚bedrohlicher‘“ zu ersetzen, verbrauchte mit
dem ersten Wort das zweite mit und meldete dieses hernach als unauffindbar.
Artikel 26
Satzzählung wie im Gesetzblatt
Die Zerlegung eines Absatzes in Sätze (SatzTeiler) wird wie folgt geändert:
1. Die Marke eines Aufzählungsglieds beendet auch dann keinen Satz, wenn ihr
eine Einrückung vorausgeht. Bislang galt das nur für die Marke am äußersten
Zeilenanfang; da beide Zweige der Aufbereitung die Glieder einrücken, zählte
jedes Glied als eigener Satz. § 20 Abs. 12 des Infektionsschutzgesetzes kam
so auf neun Sätze statt der amtlichen fünf.
2. Eine Ordnungszahl vor einem Gliederungswort („nach dem 5. Abschnitt“)
beendet gleichfalls keinen Satz.
Artikel 27
Die Nummer im benannten Satz
Nennt eine Fundstelle einen Satz und darin eine Nummer („§ 5 Absatz 2 Satz 1
Nummer 3“), so ist der Satz der Suchbereich der Nummer (StellenAufloeser).
Bislang wurde die Marke im ganzen Absatz gesucht und auch in der Aufzählung eines
anderen Satzes gefunden; die Fundstelle galt dann als mehrdeutig, und der Befehl
blieb liegen.
Artikel 28
Die doppelt genannte Gliederungseinheit
Nennt der Rahmen dieselbe Gliederungseinheit wie der Befehl selbst — „In der
Inhaltsübersicht wird … Teil 2 wie folgt geändert: … Die Angabe zur Überschrift
von Teil 2 Abschnitt 4 wird gestrichen“ —, so wird sie fortan einmal statt
zweimal gezählt (InhaltsuebersichtAnwender). Das zweite Glied suchte sich sonst
innerhalb seiner selbst und blieb unauffindbar.
Artikel 29
Fortschreibung der Prüfung
(1) Neu sind die Belegfälle „gegGegenZeitrichtigenStamm“ und
„ifsgGegenZeitrichtigenStamm“ mit gepinnten Zahlen für die angewandten wie
für die manuell zu prüfenden Befehle; die drei verbleibenden Reste des
Gebäudeenergiegesetzes sind einzeln über ihren Gliederungspfad festgehalten
und im Test begründet.
(2) Vier gepinnte Zahlen sind gestiegen, weil die Artikel 25 bis 28 mehr Befehle
ihre Stelle finden lassen: das WDR-Gesetz trägt keinen Rest mehr (zuvor
einen), die Beschlussempfehlung zum Bevölkerungsschutzgesetz einundfünfzig
statt siebenundvierzig angewandte Befehle, die zum Gebäudeenergiegesetz
neunundsechzig statt achtundsechzig. Der Grund steht jeweils im Test.
(3) Der Prüfbestand umfasst hiernach dreihundertdreißig Prüfungen.
Artikel 30
Arten der Gründe
(1) Neben den ausformulierten Grund tritt seine Art (Klasse „Grund“): Befehl
nicht erkannt, Stelle nicht auffindbar, Zieltext nicht vorhanden, Fundstelle
mehrdeutig, Bereich unbrauchbar, Zitat unbrauchbar, Bestand widerspricht dem
Befehl, nicht unterstützt, Anwendung fehlgeschlagen.
(2) Die Art wird dort vergeben, wo der Grund entsteht. Die Hilfsergebnisse der
Stellenauflösung, der Textoperation und der Zeilensuche in der Inhalts-
übersicht führen sie mit ihrem Wortlaut, weil allein die erzeugende Stelle
sie kennt. Bleibt ein Verbund liegen, gilt die Art seines ersten
gescheiterten Teiles.
(3) Der ausformulierte Grund bleibt unberührt und maßgeblich. Der Grundsatz der
Nichtverwerfung erfordert die genaue Auskunft im Einzelfall; die Art ordnet
sie nur.
Artikel 31
Darstellung und Auszählung
(1) Der Abschnitt „Manuell prüfen“ der Synopse bündelt die Befehle nach der Art
des Grundes und stellt jeder Gruppe ihre Häufigkeit voran. Innerhalb der
Gruppe bleibt die Reihenfolge des Dokuments.
(2) Der Schalter „--dump-befehle“ schließt mit der Tabelle „Gründe nach
Häufigkeit“.
Artikel 32
Rüge des jüngeren Stammgesetzes
(1) Das Stammgesetz führt fortan den Stand, den seine Quelle angibt (Klasse
„Stand“). Maßgeblich ist nicht die Standzeile allein, sondern das späteste
Datum, das irgendeine Standangabe nennt: Die Hinweise der Form „Änderung
durch … textlich nachgewiesen, dokumentarisch noch nicht abschließend
bearbeitet“ bezeugen, dass der Wortlaut die Änderung bereits trägt, während
die Standzeile noch die vorige nennt.
(2) Ist der Wortlaut des Stammgesetzes jünger als die Fassung, die der
Einleitungssatz des Änderungsgesetzes fortschreibt, so ergeht eine Warnung.
Sie nennt beide Daten und weist darauf hin, dass Befehle, deren Zieltext
„im Zieltext nicht vorkommt“, wahrscheinlich hierauf beruhen.
(3) Die Warnung ergeht einmal je Dokument, auch wenn mehrere Artikel dasselbe
Stammgesetz betreffen. Bei fehlender Standangabe, bei unlesbarem
Einleitungssatz und bei gleichem oder früherem Datum schweigt die Prüfung;
geraten wird nicht.
Artikel 33
Anfügen ganzer Paragraphen
Die ankerlose Anfügung ganzer Paragraphen wird angewandt, statt als nicht
unterstützt gemeldet zu werden. Angefügt wird ans Ende des Gesetzes, bei
benannter Gliederungseinheit ans Ende ihres Blocks; trägt das Zitat keinen
Normkopf, bleibt der Befehl liegen. Die verankerte Form („Nach § 114 wird
folgender § 115 angefügt“) war schon bisher eine Struktureinfügung und bleibt es.
Artikel 34
Einfügung am Ende einer Einheit
Die Zurückweisung des Einfügeankers „am Ende“ für ganze Einheiten wird als
bewusst gezogene Grenze kenntlich gemacht und ihre Meldung neu gefasst: Wo eine
Einheit ans Ende tritt, sagt das Gesetzblatt „angefügt“. Die Verbindung kommt im
gesamten Prüfbestand kein einziges Mal vor; Vorschriften auf Verdacht werden
nicht geschrieben.
Artikel 35
Fortschreibung der Prüfung
Der Prüfbestand umfasst hiernach zweiunddreißig Prüfungen mehr als vor dem
Artikel 24, nämlich dreihundertzweiunddreißig. Neu sind namentlich die Prüfung
des Anfügens ganzer Paragraphen samt der Begründung bei fehlendem Normkopf, die
Prüfung der Bündelung im Abschnitt „Manuell prüfen“ und die Prüfung, dass die
Altersrüge beim zeitrichtigen Stamm unterbleibt und beim heutigen einmal ergeht.
Artikel 36
Die Nummern einer Anlage
(1) Trägt eine Anlage Nummern als eigene Einheiten — so der Zuständigkeitskatalog
des Berliner Allgemeinen Sicherheits- und Ordnungsgesetzes —, so ist jede eine
eigene Norm mit eigener Absatzzählung. Ihre Bezeichnung stellt die Anlage
voran: „Anlage Nummer 23“. Ebenso führt sie das Landesrechtsportal, und ebenso
sprechen die Änderungsbefehle sie an („Nach Nummer 6 Absatz 2 wird folgender
Absatz 2a eingefügt“).
(2) Der Klartext-Parser eröffnet an einem solchen Nummernkopf eine Norm; der
Stellenauflöser und die Normauflösung des Befehlsanwenders setzen die
Bezeichnung zusammen und verbrauchen die Nummer damit. Trägt das Gesetz keine
solche Norm, bleibt es beim bisherigen Weg — im gii-XML des Bundes stehen die
Nummern einer Anlage als Aufzählungsmarken in deren Wortlaut.
(3) Die Neufassung einer ganzen Anlagen-Nummer wird als Neufassung der Norm
behandelt; die im Zitat wiederholte Bezeichnung („Nummer 31“) gehört nicht in
den Wortlaut.
Artikel 37
Drei Mängel, die dabei ans Licht kamen
(1) Ob die feinste Komponente einer Fundstelle ein Absatz ist, entscheidet fortan
die letzte Komponente und nicht das bloße Vorkommen einer feineren. Die Nummer
einer Anlage steht vor der Absatzangabe und gehört zur Bezeichnung der Norm;
wer sie mitzählte, hielt die Umnummerierung eines solchen Absatzes für die
einer Aufzählungseinheit und tauschte eine Marke, die dort nicht steht. Der
Befehl galt als angewandt und bewirkte nichts.
(2) Ein Absatz, der an einem Wortlaut ausgerichtet eingefügt wird („Vor den
Wörtern … wird folgender Absatz 5 eingefügt“), wird ein Absatz und keine Zeile
im Nachbarabsatz. Der tragende Absatz wird an der Marke geteilt; was hinter ihr
stand, setzt den neuen Absatz fort. Steht die Marke am Anfang des Absatzes, so
tritt der neue schlicht vor ihn.
(3) Die Bezeichnung eines so eingefügten Absatzes behält die Nummer der Anlage.
Ohne sie sah die Schritt-Ordnung nicht, dass eine Umnummerierung ihm die
Bezeichnung erst räumt, und die Einfügung lief zu früh.
Artikel 38
Der Berliner Belegfall, vollständig
(1) Aufgenommen werden die konsolidierten Fassungen des Allgemeinen Sicherheits-
und Ordnungsgesetzes in der Gültigkeit vom 16. April bis 11. Juni 2026 nebst
der Nachfassung als Prüfmaßstab (je 171 Normen).
(2) Von den sechs Befehlen des Artikels 1 werden fünf angewandt; zuvor waren es
zwei. Einhundertachtundsechzig der einhunderteinundsiebzig Normen gleichen
danach der amtlichen Nachfassung.
(3) Die drei Abweichungen sind benannt und liegen nicht in der Anwendung: Das
Portal setzt amtliche Satznummern, wo das Gesetzblatt keine setzt (§ 67); der
eine liegengebliebene Befehl trifft eine Grenze des Klartextformats, weil ein
Zwischentitel ohne Absatzbezeichnung dem vorangehenden Absatz zugeschlagen wird
(Anlage Nummer 23); und der ganzseitenbreite Titelblock des Änderungsgesetzes
steht im Inhaltsstrom mitten in einem Zitat (Anlage Nummer 31). Die letzte
Abweichung belegt erstmals die offene Frage der geometrischen Lesereihenfolge.
(4) Der Prüfbestand umfasst hiernach dreihundertdreiunddreißig Prüfungen.
Artikel 39
Der Satz des Gesetzblatts für Baden-Württemberg
(1) Der Seitenfuß („Gesetzblatt für Baden-Württemberg, Jahrgang 2026, Nr. 26 vom
27. Februar 2026 Seite 2 von 7“) wird herausgeschnitten. Er steht im
Inhaltsstrom mitten im Befehlstext und trennt dort den Zieltext eines Befehls
von seinem Verb.
(2) Die Blattzählung („Seite 2 von 7“), die mitunter für sich allein zwischen zwei
Gliederungspunkten steht, gilt als Kolumnentitel.
Artikel 40
Zwei Befehlsidiome
(1) Der Dativ der Anfügung darf seinen Artikel verlieren: „Absatz 2 wird folgender
Satz angefügt“ steht neben „Dem Absatz 2 wird folgender Satz angefügt“.
Verwechslungsfrei ist das, weil der Befehl das Angefügte eigens benennt.
(2) Hinter einer Anlagenbezeichnung darf ein beschreibender Klammerzusatz stehen
(„In Anlage 3b (Muster des Merkblatts …) wird …“); er wird übersprungen.
Artikel 41
Der gestrichene Halbsatz
Ein Halbsatz nimmt sein Trennzeichen mit. Wird der zweite Halbsatz gestrichen, so
tritt an die Stelle des Semikolons der Schlusspunkt des Satzes; so setzt es auch
die amtliche Nachfassung (§ 24 Abs. 2 der Kommunalwahlordnung).
Artikel 42
Der baden-württembergische Belegfall
(1) Aufgenommen werden die konsolidierten Fassungen der Kommunalwahlordnung in der
Gültigkeit vom 1. August 2023 bis 30. April 2026 nebst der Nachfassung als
Prüfmaßstab.
(2) Von den siebenunddreißig Befehlen werden einunddreißig angewandt;
einundneunzig der dreiundneunzig Normen gleichen danach der amtlichen Fassung.
(3) Die sechs liegengebliebenen Befehle ändern sämtlich die Muster der Anlagen.
Sie sind nicht anwendbar, weil das Landesrechtsportal die Muster nicht als Text
ausliefert; was nicht vorliegt, lässt sich nicht ändern. Die zweite Abweichung
in § 20 beruht darauf, dass die amtliche Nachfassung einen doppelten Artikel
aufräumt, den der Befehlswortlaut stehenließe.
(4) Der Prüfbestand umfasst hiernach dreihundertvierunddreißig Prüfungen. Damit
trägt jedes Land, von dem ein Änderungsdokument vorliegt, einen Belegfall bis
zur Anwendung.
════════════════════════════════════════════════════════════════════════════════
Fassung vom 22. August 2026,
zuletzt geändert durch die am 22. August 2026 vorgenommenen Änderungen
════════════════════════════════════════════════════════════════════════════════
Zwei Mängel, die die vorangegangene Fassung aufgedeckt, aber nicht behoben hatte,
wiegen schwerer als alles sonst Offene: Sie führen zu einem falschen Ergebnis,
ohne es anzuzeigen. Ein Befehl gilt als angewandt, der Wortlaut des Zielgesetzes
weicht gleichwohl von der amtlichen Nachfassung ab, und der Abschnitt „Manuell
prüfen“ schweigt. Damit war das Leitprinzip des Erzeugnisses — niemals
stillschweigend zu verwerfen — an dieser Stelle verfehlt.
Bei ihrer Behebung hat sich ergeben, dass die beiden Mängel nicht nebeneinander
standen, sondern eine Ursache teilten: die fehlende Einrückung. Sie ist im
kanonischen Klartext nicht Schmuck, sondern trägt die Gliederung; wer sie
verliert, verliert die Zugehörigkeit einer Zeile zu ihrer Einheit.
Erster Teil
Behebung der festgehaltenen Mängel
Artikel 1
Einrückung bei der Neufassung einer Aufzählungseinheit
(1) Die Neufassung einer Nummer oder eines Buchstabens (BefehlAnwender.
wendeNeufassungAn) setzt den neuen Wortlaut fortan auf die Einrückung der
Einheit, an deren Stelle er tritt; bislang begann er in Spalte 0. Es gilt
damit dasselbe wie bei der Ersetzung einer solchen Einheit.
(2) Der Grund ist folgender: Der Zeilenblock einer Aufzählungsmarke
(StellenAufloeser.zeilenBlock) reicht so weit, wie tiefer eingerückt wird.
Eine in Spalte 0 gesetzte Zeile nimmt daher den gesamten Rest des Absatzes
als ihre Kindzeilen an. Der nachfolgende Befehl „Nach Nr. 4 werden die
folgenden Nrn. 5 bis 7 eingefügt“ trat deshalb hinter die letzte Nummer des
Absatzes statt hinter die Nr. 4 — er galt als angewandt, stand aber falsch.
(3) Die Neufassung eines Satzes oder Halbsatzes bleibt unberührt; ihr Bereich
beginnt mitten in der Zeile und trägt keine Einrückung.
Artikel 2
Heilung des Weißraums nach einer Streichung
(1) Die Streichung von Wörtern (BefehlAnwender.wendeStreichungAn) heilte den
zurückbleibenden Weißraum bislang über den gesamten Zieltext; dieser ist bei
einer Stelle ohne Fein-Komponente der ganze Absatz. Sie fraß dabei die
Einrückung der Aufzählungszeilen: Aus den zwei Leerzeichen vor jeder Marke
wurde eines.
(2) Geheilt wird fortan allein die Naht der Streichung (heileNaht): Aus zwei
Leerzeichen wird eines, vor einem Satzzeichen bleibt keines. Traf die
Streichung den Zeilenanfang, so ist der Weißraum vor der Naht Einrückung und
bleibt unangetastet.
Artikel 3
Weichen des leeren Platzhalters
Vergibt ein eingefügter Block eine Bezeichnung, die ein leerer Platzhalter der
Altfassung noch hält („7. (aufgehoben)“), so weicht dieser. Es ist dieselbe
Regel, die schon bei der Umnummerierung auf eine weggefallene Bezeichnung gilt,
und so zeigt es auch die amtliche Nachfassung. Verdrängt wird dabei nur ein
Platzhalter, niemals ein Wortlaut; ein Platzhalter, den kein Befehl anrührt,
bleibt stehen.
Artikel 4
Zwischenraum hinter der Aufzählungsmarke
Im Satz des Gesetzblatts steht zwischen der Marke einer Aufzählungszeile und
ihrem Text die Tabulatorspalte des Setzers. Der kanonische Klartext kennt dort
ein einzelnes Leerzeichen. Die Aufbereitung eines Zitats (normalisiereZitatText)
führt den Zwischenraum künftig auf dieses zurück; andernfalls trügen gerade die
neu gesetzten Zeilen ein anderes Satzbild als die unberührten.
Artikel 5
Nachweis
(1) Der Akzeptanztest des BayJG (EndToEndTest.bayJgGvblAcceptance) hielt die
beiden Mängel bislang ausdrücklich fest. Die betreffenden Zusicherungen
werden umgekehrt: Der eingefügte Block steht zwischen der Nr. 4 und der
Nr. 8, der Platzhalter ist gewichen, die Einrückung besteht fort.
(2) Art. 56 Abs. 1 des Bayerischen Jagdgesetzes gleicht damit in Aufbau und
Wortlaut der amtlichen Nachfassung (BayJG.pdf); die Gegenprobe ist Zeile für
Zeile geführt worden.
(3) Hinzu treten drei Prüfungen der zugrunde liegenden Regeln
(BefehlAnwenderTest). Der Gesamtbestand beträgt nunmehr 315 Prüfungen; keine
der gepinnten Zahlen der übrigen Belegfälle hat sich geändert.
Zweiter Teil
Thüringen
Mit der Mängelliste war die Arbeit wieder in die Breite zu führen. Von den seit
Juli beschafften Gesetzblättern der Länder war eines nie angefasst worden: das
Gesetz- und Verordnungsblatt für den Freistaat Thüringen. Es hat drei Befunde
erbracht, die keineswegs thüringisch sind, sondern allgemein gelten, und einen
Beschaffungsweg eröffnet, wo das Landesrechtportal versperrt ist.
Artikel 6
Gerade Anführungszeichen
(1) Gerade Anführungszeichen (") wurden bislang ausnahmslos als schließende
gelesen (TextBereiniger.normalisiereAnfuehrungszeichen). Für das Bundes-
gesetzblatt und die Drucksachen trifft das zu; dort öffnet stets das
deutsche Zeichen, und ein gerades ist ein Satz- oder Extraktionsfehler.
(2) Führt ein Text dagegen kein einziges öffnendes Zeichen („), so setzt er die
geraden beidseitig. Sie werden fortan paarweise gelesen: das erste öffnet,
das zweite schließt, und so fort. Bei ungerader Anzahl ist der Text
nachweislich unbalanciert; dann bleibt es bei der schließenden Lesart, und
es ergeht eine Warnung.
(3) Ohne diese Unterscheidung fände der Zitatextraktor in einem so gesetzten
Blatt kein einziges Zitat; sämtliche Befehle des Heftes gingen verloren.
(4) Eine Regel nach der Stellung des Zeichens (öffnend, wenn kein Leerzeichen
folgt) wäre untauglich: Das Thüringer Blatt führt Zitate, die mit einem
Leerzeichen beginnen, und umgekehrt schließende Zeichen, die unmittelbar am
Folgewort kleben.
Artikel 7
Bereichsweise Umnummerierung von Paragraphen
(1) Der Befehl „Die bisherigen §§ 9 bis 12 werden die §§ 8 bis 10“ nennt vier
Ausgangs- und drei Zielbezeichnungen. Das ist kein Widerspruch: Der Bereich
nennt Bezeichnungen, gezählt werden aber Einheiten, und ein aufgehobener
Platzhalter darin ist keine Einheit — er trägt keinen Inhalt.
(2) Welche Einheiten ein Bereich trägt, weiß erst das Gesetz. Ein solcher Befehl
bleibt deshalb bis zur Anwendung ungeteilt (Aenderungsbefehl.
BereichsUmnummerierung) und wird dort entfaltet (BefehlAnwender.
entfalteBereiche): Die vorhandenen Einheiten des Bereichs werden der Reihe
nach den neuen Bezeichnungen zugeordnet. Geht die Zählung auch dann nicht
auf, bleibt der Befehl manuell zu prüfen — mit Angabe des Grundes.
(3) Geht die Zählung der Bezeichnungen schon im Wortlaut auf, so bleibt es bei
der bisherigen paarweisen Zuordnung.
Artikel 8
Weitere Befehlsformen und Satzbefunde
(1) Die Verweisung tritt als Gegenstand einer Wortoperation neben Wort, Wörter,
Angabe und Zahl (BefehlErkenner): „In Satz 2 wird die Verweisung „X“ durch
die Verweisung „Y“ ersetzt.“
(2) Der Rahmen einer Umnummerierung darf sich auf eine Untereinheit der
umnummerierten Einheit verengen: „Der bisherige § 8 wird § 7 und Absatz 1
wird wie folgt geändert:“. Die Unterpunkte meinen dann diesen Absatz des neu
bezeichneten Paragraphen.
(3) Die Bereichs-Neufassung („Die §§ 1 bis 3 erhalten folgende Fassung:“) wird
fortan allein an den Bezeichnungen des angekündigten Bereichs geteilt, nicht
mehr an jedem Paragraphenzeichen des Zitats. Der neue Wortlaut zitiert
reihenweise andere Vorschriften; an diesen zu schneiden erfand Normen, die es
nicht gibt. Nennt der Bereich einen Normkopf, den das Zitat nicht führt, so
sagen Ankündigung und Wortlaut Verschiedenes — dann wird nicht geraten.
(4) Ob ein Trennstrich vor einem Großbuchstaben eine Silbentrennung war,
entscheidet fortan der Wortbestand des Dokuments (TextBereiniger.
warTrennung): Trägt es das Wort auch ohne Strich, so war es eine Trennung.
Der Satz trennt auch binnengroßgeschriebene Kürzel („Thür-“ + „KigaG“),
während echte Bindestriche („Ton-Bild-Übertragung“) unangetastet bleiben.
(5) Die Überschrift einer zitierten Neufassung darf über mehrere Zeilen laufen
(BefehlAnwender.parseNorm); fortgesetzt wird sie über klein beginnende
Zeilen. Steht sie in derselben Zeile wie die Bezeichnung, so gehört sie in
den Titel und nicht zusätzlich in den Normtext.
(6) Der laufende Kolumnentitel und der Seitenfuß des Thüringer Blattes werden
entfernt (TextBereiniger). Sie stehen im Inhaltsstrom mitten im Text und
zerschneiden sogar getrennte Wörter; sie sind daher herauszuschneiden und
nicht als eigene Zeile zu entfernen.
Artikel 9
Belegfall Thüringen
(1) Aufgenommen wird die Vierte Verordnung zur Änderung der Thüringer
Kindergartenfinanzierungsverordnung (GVBl. Nr. 2/2026 S. 77) als voller
Akzeptanzfall (EndToEndTest.thuerKiGaFinVOAendVO): zehn Befehle, kein Rest.
(2) Die Stammfassung (Thueringen/ThuerKigaFinVO-alt.txt) ist aus vier
Gesetzblättern zusammengesetzt, da das Landesrechtportal Thüringens dieselbe
anmeldepflichtige Anwendung ist wie die Portale Schleswig-Holsteins, Berlins,
Baden-Württembergs und Hessens. Die Hefte gibt die Parlamentsdatenbank des
Landtags frei aus, der das Blatt herausgibt. Herkunft und Aufbereitung sind
in Thueringen/SOURCES niedergelegt.
(3) Der Gesamtbestand beträgt nunmehr 325 Prüfungen; keine der gepinnten Zahlen
der übrigen Belegfälle hat sich geändert.
════════════════════════════════════════════════════════════════════════════════
Fassung vom 16. August 2026,
zuletzt geändert durch die am 16. August 2026 vorgenommenen Änderungen
════════════════════════════════════════════════════════════════════════════════
Die Browserfassung war bislang für den öffentlichen Betrieb gesperrt: Die
Anbieterkennzeichnung und die Datenschutzerklärung führten Platzhalter, und der
Verweis auf den Quelltext, den die Lizenz des Erzeugnisses beim Netzbetrieb
verlangt, zeigte auf keine Adresse. Mit dieser Fassung wird die Sperre
aufgehoben; zugleich wird die Auslieferung auf den Betrieb unter einem Unterpfad
einer bestehenden Domain eingerichtet.
Die nunmehr öffentlich erreichbare Startseite setzte sodann voraus, was
Neuankömmlinge gerade nicht haben: geeignete Dateien. Sie erhält deshalb eine
Einführung mit Verweisen auf zwei durchgerechnete Fälle. Dabei hat sich ergeben,
dass die Fundstelle des Bundesrechts das Norm-XML ausschließlich als Archiv
ausgibt; ohne dessen Auspacken bliebe die Einführung eine Anleitung zum
Zwischenschritt von Hand.
Endlich wird das Erscheinungsbild demjenigen angeglichen, was das Erzeugnis
darstellt: Es tritt fortan schwarzweiß auf wie ein Gesetzblatt. Farbe verbleibt,
wo sie eine Aussage trägt — im Diff und an den Balken der Hinweiskästen —, und
bedeutet dort überall dasselbe. Bei der Erprobung einer gänzlich farblosen
Fassung hat sich ergeben, dass die Farbe im Diff nicht bloß schmückte, sondern
allein trug; das hat einen Mangel der Auszeichnung offengelegt, der nunmehr auch
neben der wiederhergestellten Farbe behoben bleibt.
Artikel 1
Anbieterkennzeichnung und Datenschutzerklärung
(1) Die Anbieterkennzeichnung (impressum.html) wird mit den Angaben nach § 5 DDG
versehen; hinzu treten die Bezeichnung des nach § 18 Abs. 2 MStV
Verantwortlichen sowie ein Hinweis darauf, dass der Dienst unentgeltlich und
nichtkommerziell erbracht wird und die Synopsen ohne Gewähr ergehen.
(2) Die Datenschutzerklärung (datenschutz.html) wird um die Bezeichnung des
Verantwortlichen (Art. 4 Nr. 7 DSGVO) und um die Rechte der betroffenen
Personen (Art. 15 bis 21, Art. 77 DSGVO) ergänzt. Für die Zugriffsprotokolle
werden die Rechtsgrundlage (Art. 6 Abs. 1 lit. f DSGVO) und die
Aufbewahrungsfrist (vierzehn Tage) benannt.
(3) Die Aussage über die Dateien der Nutzer:innen bleibt unverändert; sie trifft
zu, weil die Verarbeitung ausschließlich im Browser stattfindet.
Artikel 2
Beilegung des Quelltextes
(1) Es wird das Skript deploy/webpaket.sh eingeführt. Es tritt in der Phase
„package“ des Profils -Pwasm hinter den Übersetzer und macht aus dessen
Ergebnis ein auslieferbares Verzeichnis:
a) Der Textzwischenschritt (aendggner.js.wat) wird entfernt.
b) Der Quelltext der gebauten Fassung wird als aendggner-quelltext.tar.gz
nebst der Kennung der Fassung (quelltext-fassung.txt) beigelegt.
c) Die großen Dateien werden nach .gz und .br vorkomprimiert.
(2) Trägt der Arbeitsbaum uneingecheckte Änderungen, so bricht der Bau ab. Der
Grund ist folgender: Der beigelegte Quelltext wäre alsdann nicht derjenige
der ausgelieferten Fassung, und die Auflage des § 13 AGPLv3 wäre verfehlt.
Für Probeläufe kann die Prüfung durch QUELLTEXT_UNGEPRUEFT=1 abbedungen
werden.
(3) Der Fuß der Startseite (index.html) verweist fortan auf den beigelegten
Quelltext; die fortlaufende Quelle wird als Zweitverweis daneben genannt.
Artikel 3
Auslieferungsvorlage
Die Vorlage (deploy/nginx-aendggner.conf) wird vom eigenen server-Block auf ein
location-Schnipsel umgestellt, das in den bestehenden Server eingefügt wird. Sie
wird wie folgt geändert:
1. Aufgenommen wird die Weiterleitung des Pfades ohne abschließenden
Schrägstrich; ohne sie zielten sämtliche relativen Verweise der Seite auf die
Wurzel der Domain.
2. Die Dateien werden über „root“ statt über „alias“ zugeordnet, weil try_files
in einer Präfix-Location gegen den root auflöst und mit alias fehlgeht.
3. Die Haltefrist von sieben Tagen entfällt und wird durch Revalidierung
ersetzt. Der Grund ist folgender: Die Dateinamen tragen keine
Fassungskennung; ein Browser mit altem Steuerskript und neuem Rechenwerk
erhielte sonst eine Mischfassung, die es nie gegeben hat.
4. Die vorkomprimierten Dateien werden ausgeliefert, statt das Rechenwerk je
Abruf neu zu packen.
5. Aufgenommen werden die Sicherheitskopfzeilen nebst einer Inhaltsrichtlinie.
Zwei ihrer Freigaben sind unvermeidlich und in der Vorlage begründet:
diejenige für die Instanziierung des Moduls und diejenige für eingebettete
Stile, weil die Synopse als blob:-Dokument die Richtlinie der erzeugenden
Seite erbt, ihr Stylesheet aber eingebettet trägt.
Artikel 4
Ergänzungen der Oberfläche
1. Die Startseite erhält einen Hinweis für den Fall abgeschalteten JavaScripts;
bislang blieb das Formular alsdann wortlos wirkungslos.
2. Es wird ein Sinnbild (favicon.svg) eingeführt und in allen Seiten relativ
verwiesen; unter einem Unterpfad griffe der Abruf der Wurzel ins Leere.
3. Die Startseite erhält eine Kurzbeschreibung und die Angabe ihrer kanonischen
Adresse; das Stilblatt wird um die Auszeichnung der Überschriften zweiter
Ordnung, der Anschriften und der Hinweise ergänzt.
Artikel 5
Annahme von Archiven als Stammgesetz
(1) Die Fundstelle des Bundesrechts (gesetze-im-internet.de) gibt das Norm-XML
nicht als solches, sondern allein als Archiv aus (…/<Kurzbezeichnung>/
xml.zip). Ein solches Archiv wird künftig unmittelbar als Stammgesetz
angenommen; der darin enthaltene XML-Eintrag wird ausgepackt.
(2) Es wird die Klasse ZipAuspacker eingeführt. Sie liest das Zentralverzeichnis
am Dateiende — nicht die örtlichen Vorspanne, deren Größenangaben bei
nachgestellten Beschreibern erst hinter den Daten stehen —, wählt daraus den
einzigen auf „.xml“ endenden Eintrag und packt ihn aus. Verzeichniseinträge
und das von manchen Betriebssystemen beigefügte Beiwerk bleiben außer
Betracht; die Auswahl ist erforderlich, weil die Fundstelle den Gesetzen mit
Anlagen deren Bilddateien mit ins Archiv legt.
(3) Das Format wird von Hand gelesen. Der Grund ist folgender: Von den
Archivklassen der Laufzeitumgebung trägt in der Browserfassung allein der
Entpacker (Inflater), den die Ersetzung InflaterErsatz auf eine reine
Java-Umsetzung zurückführt; die übrigen (ZipInputStream, ZipFile, CRC32)
beruhen auf Bindungen, die das Übersetzungswerkzeug nicht kennt. Auch die
Prüfsumme wird deshalb im Erzeugnis selbst berechnet.
(4) Die Erkennung (DateiTyp) wird um die Art ZIP ergänzt. Ihre Prüfung geht der
Prüfung auf PDF voran, weil sie am ersten Byte verankert ist, während jene
ein Vorschaufenster durchsucht; ein Archiv mit der Zeichenfolge „%PDF-“ in
seinen gepackten Daten wäre sonst als PDF angesprochen worden.
(5) Das Auspacken tritt in Pipeline.ladeStammgesetz vor die Erkennung. Die
Änderungsdokumente bleiben unberührt: Gesetzblätter und Drucksachen kommen
nirgends als Archiv. Die Quellenzeile der Synopse nennt weiterhin die
angegebene Datei (xml.zip), damit der Weg zur Fundstelle zurück erkennbar
bleibt.
Artikel 6
Einführung in der Browserfassung
(1) Die Startseite erhält über dem Formular einen zugeklappten Block
(„Noch keine Dateien? Zwei Beispiele zum Ausprobieren“). Zugeklappt nimmt er
eine Zeile ein; das Formular bleibt an seinem Platz.
(2) Der Block nennt die drei Schritte und bietet zwei Fälle mit Verweisen auf die
amtlichen Fundstellen an:
a) ein verkündetes Änderungsgesetz — das Gesetz gegen den unlauteren
Wettbewerb nebst dem Dritten Gesetz zu seiner Änderung (BGBl. 2026 I
Nr. 43), neunzehn Befehle an sechs Normen, nichts manuell zu prüfen;
b) einen Gesetzentwurf — das Allgemeine Gleichbehandlungsgesetz nebst dem
Regierungsentwurf BT-Drs. 21/6178, dreiundzwanzig Befehle an vierzehn
Normen, einer zur manuellen Prüfung markiert.
(3) Mitausgeliefert wird nichts; die Seite ruft von sich aus nichts ab. Die
Verweise öffnen ein eigenes Fenster, weil ein im selben Fenster geöffnetes
Schriftstück die bereits gewählten Dateien aus dem Formular nähme.
(4) Der Hinweis am Feld „Stammgesetz“ nennt nunmehr auch das Archiv. Das
Stilblatt wird um die Auszeichnung des Blockes ergänzt; neue Farben treten
nicht hinzu, sodass Hell- und Dunkelfassung ohne Zutun stimmen.
Artikel 7
Gestaltung
(1) Das Stilblatt der Seiten (style.css) wird auf Schwarzweiß umgestellt. Die
bisherige Schmuckfarbe — ein warmes Braun — entfällt ersatzlos; an ihre Stelle
tritt die Textfarbe. Die Abrundung der Kästen, Felder und Knöpfe entfällt
gleichfalls; gedrucktes Papier trägt keine runden Ecken.
(2) Weil die Schmuckfarbe bislang kenntlich machte, was anklickbar ist, werden die
Verweise fortan unterstrichen. Der Knopf kehrt beim Überfahren Grund und
Schrift um; die bisherige Aufhellung wäre an einem schwarzen Knopf ohne
Wirkung geblieben.
(3) Farbe verbleibt allein dort, wo sie eine Aussage trägt, und bedeutet überall
dasselbe: Rot warnt, Grün bestätigt. Die Hinweiskästen erhalten dazu einen
Balken am linken Rand — der Hinweis bei abgeschaltetem JavaScript und die
Fehlermeldung einen roten, die Fertigmeldung einen grünen, die Meldung
während der Arbeit einen grauen, weil noch nichts feststeht. Die
Beschriftungen bleiben, wie sie waren, und benennen den Zustand ohnehin; der
Balken hebt den Kasten hervor, er trägt nicht allein.
(4) Das eingebettete Stilblatt der Synopse (HtmlRenderer) behält die Scheidung von
Streichung und Einfügung nach Rot und Grün; sie ist am Bildschirm die
schnellste. Zu ihr tritt jedoch die Form — durchgestrichen gegen
unterstrichen —, dazu die Spalte, in der die Marke steht.
(5) Damit wird ein Mangel behoben: Die Einfügung hob die ihr vom Browser
zugedachte Unterstreichung bisher ausdrücklich auf. Damit war der grüne Grund
das einzige Merkmal, an dem sie zu erkennen war; wer Farben nicht oder anders
wahrnimmt oder die Synopse schwarzweiß ausdruckte, sah eine Einfügung
überhaupt nicht. Die Unterstreichung wird wiederhergestellt.
(6) Die Abzeichen an den Normköpfen behalten ihre Farben nach derselben Regel,
werden aber in Versalien mit Sperrung gesetzt. Sie sind ohnehin beschriftet;
die Farbe bestätigt dort nur, was dasteht.
(7) Dem Körper der Synopse werden Schrift- und Grundfarbe ausdrücklich zugewiesen.
Der klebende Spaltenkopf übernahm seinen Grund bisher durch Vererbung und
hatte mithin keinen verlässlichen. Für den Druck werden die farbigen Flächen
von der Sparschaltung der Browser ausgenommen, damit sie nicht fortfallen.
(8) Das Tabellenzeichen (favicon.svg) wird nachgezogen. Es führt die Werte
ausgeschrieben, weil ein Tabellenzeichen keine Stilblattgrößen erbt.
Schlussbestimmung
Die vorstehenden Änderungen sind durch die Prüfung sämtlicher Testfälle
(dreihundertzwölf an der Zahl, darunter acht neue zum Auspacken) bestätigt
worden. Das Auspacken ist überdies gegen die Fundstelle selbst erprobt worden:
Das unmittelbar bezogene Archiv des Gesetzes gegen den unlauteren Wettbewerb
ergibt mit dem Regelungstext des Bundesgesetzblattes dieselbe Synopse wie die
entpackte Fassung — die Ausfertigungen unterscheiden sich allein in der
Quellenzeile. Die Inhaltsrichtlinie ist gegen
die laufende Anwendung erprobt worden: Der Lauf des IfSG-Falles im Browser hat
unter ihr achtundvierzig angewandte Befehle, siebenundzwanzig zur manuellen
Prüfung und einundzwanzig geänderte Normen ergeben, mithin dasselbe wie die
Befehlszeile, und keine Beanstandung hinterlassen; die Erforderlichkeit der
Freigabe für eingebettete Stile ist dadurch belegt, dass die Synopse ohne sie
unformatiert erscheint.
Die Umstellung des Erscheinungsbildes ist in Augenschein genommen worden, und
zwar in Hell- und in Dunkelfassung: die Startseite nebst den drei Zuständen der
Meldung, die Anbieterkennzeichnung sowie eine über die Befehlszeile erzeugte
Synopse des Gebäudeenergiegesetzes (achtundsechzig angewandte Befehle,
einundfünfzig zur manuellen Prüfung, siebenundvierzig geänderte Normen, mithin
dasselbe wie zuvor). Streichung, Einfügung und die drei Abzeichen sind dabei
auch dann auseinanderzuhalten, wenn man von ihren Farben absieht.
════════════════════════════════════════════════════════════════════════════════
Fassung vom 15. August 2026,
zuletzt geändert durch die am 15. August 2026 vorgenommenen Änderungen
════════════════════════════════════════════════════════════════════════════════
Das Erzeugnis hat die mehrschrittige Umnummerierungssequenz bislang als eine ihm
wesenseigene Grenze behandelt und ihre Folgeänderungen dem Abschnitt „Manuell
prüfen“ zugewiesen. Die Prüfung des bayerischen Belegfalls (Art. 56 des
Bayerischen Jagdgesetzes, Neunummerierung des Bußgeldkatalogs durch § 1 Nr. 48
des Gesetzes vom 31. März 2026) hat ergeben, dass es sich um keine Grenze der
Sache, sondern um drei voneinander unabhängige Mängel gehandelt hat. Sie werden
mit dieser Fassung behoben.
Artikel 1
Ordnung der Anwendung nach Schritten
(1) Der Anwender (BefehlAnwender) faltet die Befehlsliste vor der Anwendung zu
einer Liste von Schritten auf; ein Verbund (Sammelbefehl) liefert je
Teilbefehl einen Schritt, jeder andere Befehl einen einzigen. Geordnet
werden fortan die Schritte, protokolliert wird unverändert je Befehl.
(2) Der Grund der Trennung ist folgender: Ein Verbund aus einer Umnummerierung
und einer Begleitänderung trägt zwei gegenläufige zeitliche Ansprüche. Die
Umnummerierung gehört vor denjenigen Befehl, der ihre Bezeichnung neu
besetzt; die Begleitänderung gehört an ihre Stelle im Dokument, denn sie
setzt die vorangegangenen Punkte als vollzogen voraus. Bislang setzte sich
der erste Anspruch für die ganze Einheit durch und zog die Begleitänderung
mit sich; sie traf dann auf einen Stand, den das Änderungsgesetz nicht
voraussetzt.
(3) Die Ordnungsregel selbst bleibt unverändert („wer eine Bezeichnung räumt,
kommt vor demjenigen, der sie neu besetzt“), wird aber nunmehr vollständig
durchgesetzt: Vor jedem Schritt laufen erst diejenigen Schritte, die ihm
eine Bezeichnung räumen, und vor diesen wiederum die ihren. Eine ringförmige
Abhängigkeit bricht ab; die beteiligten Schritte behalten dann ihre
Dokumentreihenfolge.
Artikel 2
Erkennung der abgekürzten lokativen Folgeklausel
Das Muster der lokativen Klausel (BefehlErkenner) schloss mit einer Wortgrenze.
Hinter einem abgekürzten Bezeichnungswort steht jedoch bereits der
Abkürzungspunkt, und zwischen ihm und dem folgenden Leerzeichen liegt keine
Wortgrenze; der Klausel entging deshalb jede Kurzform („in Abs. 2 …“, „in
Buchst. b …“). An die Stelle der Wortgrenze tritt die Bedingung, dass kein
Buchstabe folgt.
Artikel 3
Auflösung der Aufzählungseinheit ohne eigenen Text
Der Stellenaufloeser (StellenAufloeser) verlangte hinter der Aufzählungsmarke
Text auf derselben Zeile. Eine Einheit, die sich vollständig in ihre
Untergliederung ergießt, führt ihre Marke aber allein auf der Zeile (Art. 56
Abs. 2 Nr. 12 des Bayerischen Jagdgesetzes, darunter nur die Buchstaben a und
b); sie galt deshalb als nicht auffindbar. Der Text hinter der Marke ist fortan
wahlfrei.
Schlussbestimmung
(1) Die vorstehenden Änderungen sind durch die Prüfung sämtlicher Testfälle
(dreihundertvier an der Zahl) sowie durch die vollständige Erstellung
(mvnw verify) bestätigt worden.
(2) Der bayerische Belegfall weist nunmehr sämtliche einhundertvierundfünfzig
Anweisungen als angewandt aus (zuvor einhunderteinundfünfzig); die
Ausschussfassung der Beschlussempfehlung zum Gebäudeenergiegesetz weist
achtundsechzig statt siebenundsechzig aus. Die übrigen Bezugszahlen des
Bundes und der Länder sind unverändert geblieben.
(3) Nicht behoben ist die Stellung eines eingefügten Blocks: Die Anweisung „Nach
Nr. 4 werden die folgenden Nrn. 5 bis 7 eingefügt“ (Art. 56 Abs. 1 des
Bayerischen Jagdgesetzes) wird angewandt, ihr Block tritt aber an das Ende
des Absatzes statt hinter die Nummer 4; ebenso verbleibt der leere
Platzhalter „7. (aufgehoben)“ der Altfassung zwischen den Nummern 9 und 10.
Beides bestand schon vor dieser Fassung und ist im Belegfall festgehalten.
(4) Ferner ist festgehalten: Die Heilung doppelter Leerzeichen nach einer
Streichung (BefehlAnwender) wirkt auf den gesamten Zieltext und verkürzt
dabei die Einrückung der Aufzählungszeilen. Auch dies bestand schon zuvor.
════════════════════════════════════════════════════════════════════════════════
Fassung vom 14. August 2026,
zuletzt geändert durch die am 14. August 2026 vorgenommenen Änderungen
════════════════════════════════════════════════════════════════════════════════
Das Erzeugnis nimmt bislang zwei Sorten von Änderungsdokumenten entgegen und
behandelt sie gleich: verkündete Artikelgesetze und Gesetzentwürfe. Damit fehlt
ihm die zweite Hälfte des Gesetzgebungsverfahrens — die Dokumente, die einen
Entwurf ändern statt ein Gesetz. Diese Fassung führt den Begriff der Dokumentart
ein, wendet Änderungsanträge auf den Entwurf an, auf den sie zielen, und trennt
die Spalten einer Zusammenstellung.
Artikel 1
Erkennung der Dokumentart
(1) Die Art eines Änderungsdokuments wird nunmehr aus seinem Kopf erschlossen
(DokumentErkenner, DokumentArt, DokumentKopf). Unterschieden werden das
verkündete Artikelgesetz, der Gesetzentwurf, der Änderungsantrag, die
Beschlussempfehlung sowie das Dokument ohne Änderungsbefehle
(Entschließungsantrag, schlichter Antrag, Plenarprotokoll, Bericht).
(2) Maßgeblich ist allein der Text; der Dateiname bleibt außer Betracht. Die
Beispieldaten belegen die Notwendigkeit: Die Datei mit dem Namen
„BT-Drs-21-7071_Beschlussempfehlung.pdf“ enthält einen Entschließungsantrag.
(3) Die Erkennung arbeitet auf dem unbereinigten Extraktionstext, da der
Textbereiniger gerade diejenigen Drucksachenköpfe entfernt, aus denen Art und
Nummer hervorgehen. Erfasst werden dabei auch die eigene Drucksachennummer und
die Nummern der in Bezug genommenen Drucksachen.
(4) Ein Dokument ohne Änderungsbefehle wird übergangen und in der Synopse
gemeldet; bisher führte es stillschweigend zu keinem Befehl.
(5) Ist an einer Synopse ein Entwurf, ein Antrag oder eine Beschlussempfehlung
beteiligt, so trägt sie den Hinweis, dass sie eine Entwurfsfassung und nicht
geltendes Recht zeigt (HtmlRenderer). Die Quellenzeile nennt je Datei die
erkannte Art.
(6) Die Grenze des Begründungsteils wird für Entwürfe und Anträge um die dort
üblichen Überschriften erweitert („A. Allgemeiner Teil“, „Zu Artikel 1“); für
verkündete Gesetze bleibt es bei der schlichten Marke, damit ein Gesetzblatt
nicht an einem gleichlautenden Wort abbricht (AenderungsgesetzParser).
Artikel 2
Änderungsanträge
(1) Ein Änderungsantrag ändert nicht das Stammgesetz, sondern eine Drucksache.
Sein Rahmensatz benennt daher zwei Ebenen zugleich: die Stelle in der Drucksache
und die Stelle in dem Text, den der dort stehende Befehl zitiert. Beide werden
gesondert geführt (AenderungsantragParser mit den Sätzen DrucksachenStelle und
MetaBefehl); die Drucksachenstelle wird bewusst nicht als Stelle modelliert, da
diese eine Fundstelle im Gesetz bezeichnet und ein anderes Bezugssystem meint.
(2) Die Befehle werden auf den Lineartext des Entwurfs angewandt
(EntwurfsPatcher). Der Gesetzesanwender bleibt unberührt: Ein Entwurf ist kein
Gesetz, sondern eine Folge von Befehlen, deren Zitate erst künftig Gesetz werden
sollen; der Antrag greift in eben diese Zitate ein.
(3) Bei der Suche nach der Drucksachenstelle werden die Zitate zeichengleich
ausgeblendet. Andernfalls gälten die Aufzählungen des zitierten Gesetzestextes
(„1. Haarwild:“) als Gliederungspunkte der Drucksache und ließen den gesuchten
Punkt vorzeitig enden.
(4) Welcher Entwurf gemeint ist, entscheidet die vom Antrag genannte
Drucksachennummer, nicht die Reihenfolge der Argumente (Pipeline). Fehlt der
Entwurf, bleibt der Antrag unangewandt und wird gemeldet; eine ersatzweise
Anwendung auf das Stammgesetz unterbleibt, da die Stellenangaben auf die
Drucksache zielen.
(5) Erkannt wird die elliptische Antragsform, die das Hilfsverb nur einmal in
der Beschlussformel führt („In Nr. 1.29 die Angabe „,“ am Ende durch die Angabe
„;“ ersetzt.“). Das fehlende Hilfsverb wird an der Stelle ergänzt, an der es im
vollständigen Satz stünde (BefehlErkenner).
(6) Das allgemeine Ersetzungsmuster lässt nunmehr den Zusatz „am Ende“ zwischen
Ziel und „durch“ zu und führt ihn als solchen. Bisher kannte diesen Zusatz nur
das Muster für Satzzeichen.
(7) Der Stellenparser nimmt gestufte Nummern an („Nr. 1.29“), wie sie in
dezimal durchgezählten Listen vorkommen.
Artikel 3
Zusammenstellung einer Beschlussempfehlung
(1) Die Zusammenstellung stellt links den Entwurf und rechts die Beschlüsse des
Ausschusses gegenüber. Anders als beim alten Bundesgesetzblatt und beim Gesetz-
und Verordnungsblatt für Berlin stehen die Spalten nicht nacheinander im
Inhaltsstrom, sondern zeilenweise verschränkt; sie werden daher erstmals anhand
der Koordinaten getrennt (FontgroessenFilter, PatchTextExtraktor).
(2) Geschnitten wird an der Blattmitte, jedoch nur dort, wo ein tatsächlicher
Spaltensteg vorliegt. Eine über die Blattmitte durchlaufende Zeile ist
ganzseitenbreit (Vorblatt, Bericht, Seitenkopf); sie bleibt ungeschnitten und
wird der linken Spalte zugeschlagen, damit sie genau einmal erscheint.
(3) Der gesperrt gesetzte Vermerk der Ausschussspalte wird auf seine Normalform
gebracht, der laufende Spaltenkopf als Kolumnentitel entfernt (TextBereiniger).
(4) Die Auflösung der rechten Spalte unterbleibt einstweilen. Sie druckt
Unverändertes nicht ab, sondern vermerkt es — und zwar nicht nur je
Gliederungspunkt, sondern auch zeilenweise innerhalb zitierter Blöcke. Die
rechte Spalte ist damit für sich genommen kein vollständiges Dokument; ihre
Anführungszeichen gehen nicht auf. Eine Auflösung über die Gliederungspfade
allein wurde erprobt und ist daran gescheitert; erforderlich ist die zeilenweise
Zuordnung beider Spalten über ihre gemeinsame Grundlinie im Satzspiegel. Bis
dahin wird eine Beschlussempfehlung erkannt und unter Angabe des Grundes
übergangen, verbunden mit dem Hinweis auf die Drucksachennummer des Entwurfs,
der sich stattdessen eignet.
Artikel 4
Prüffälle
(1) Es treten hinzu: die Einordnung von zwölf Beispieldokumenten nach ihrer Art
(DokumentErkennerTest), das Lesen und Anwenden eines Änderungsantrags
(AenderungsantragParserTest, EntwurfsPatcherTest) sowie vier Fälle in
EndToEndTest — der Antrag der Fraktion BÜNDNIS 90/DIE GRÜNEN zum bayerischen
Jagdgesetz (Ltg.-Drs. 19/10365), die Unberührtheit des Stammgesetzes durch
ebendiesen Antrag, die Spaltentrennung der Zusammenstellung zur Drucksache
20/7619 und die Behandlung eines Entschließungsantrags.
(2) Der Antragsfall belegt beides: Der Antrag streicht den Goldschakal aus der
Artenliste des neuen § 18 der Ausführungsverordnung und schließt die Aufzählung
mit einem Semikolon ab; die Synopse des Bayerischen Jagdgesetzes bleibt dabei
zu Recht unverändert, weil der Antrag auf einen Paragraphen des Entwurfs zielt,
der die Verordnung und nicht das Gesetz ändert.
(3) Die Spaltentrennung wird daran gemessen, dass die linke Spalte der
Zusammenstellung Befehl für Befehl den Regierungsentwurf ergibt, aus dem sie
gebaut ist (117 Befehle, wie aus Drucksache 20/6875).
Artikel 5
Handbuch
Das Handbuch (README.adoc) erhält den Abschnitt „Quellformate: Gesetz, Entwurf,
Antrag“. Die bisherige Angabe, Meta-Änderungen an Drucksachen seien bewusst
nicht abgedeckt, entfällt. Das Hinweisfeld der Web-Anwendung nennt die nunmehr
zulässigen Dokumentarten.
════════════════════════════════════════════════════════════════════════════════
Fassung vom 26. Juli 2026,
zuletzt geändert durch die am 26. Juli 2026 vorgenommenen Änderungen
════════════════════════════════════════════════════════════════════════════════
Der zweispaltige Belegfall Berlin (Gesetz zur Änderung des Allgemeinen
Sicherheits- und Ordnungsgesetzes und des LAF-Errichtungsgesetzes vom 3. Juni
2026, GVBl. S. 234) wird untersucht. Der Befund widerlegt die bisherige Annahme:
Die Reihenfolge des Inhaltsstroms ist bereits die Lesereihenfolge; eine
koordinatenbasierte Spaltenerkennung ist nicht erforderlich. Die tatsächlichen
Hindernisse liegen anderswo — davon werden vier behoben. Von den sechs Befehlen
des Heftes werden danach fünf erkannt.
Artikel 1
Eingebettetes Rahmenziel in Paragraphenform
Der Änderungsgesetz-Parser (AenderungsgesetzParser) übernahm ein in der
Änderungsformel selbst genanntes Ziel („§ 2 Satz 1 des Gesetzes zur Errichtung
eines Landesamtes … wird wie folgt geändert:“) nicht als Kontext der
nachfolgenden Gliederungspunkte. Ursache war die vordere Wortgrenze des Musters
EINGEBETTETES_ZIEL: „§“ ist selbst kein Wortzeichen, eine Wortgrenze davor
verlangte also ein vorangehendes Wortzeichen. Der §-Zweig des Musters war damit
unerreichbar und allein der bayerische „Art.“-Zweig wirksam. An die Stelle der
Wortgrenze tritt nunmehr die Bedingung, dass kein Buchstabe und keine Ziffer
vorangeht.
Artikel 2
Laufender Seitenkopf des Gesetz- und Verordnungsblatts für Berlin
Der laufende Seitenkopf des GVBl. für Berlin („235Gesetz- und Verordnungsblatt
für Berlin 82. Jahrgang Nr. 17 11. Juni 2026“) steht im Inhaltsstrom nicht auf
einer eigenen Zeile, sondern klebt samt Seitenzahl mitten im Fließtext der
folgenden Spalte. Er ist deshalb nicht als Kolumnentitel zu entfernen, sondern
aus dem laufenden Text herauszuschneiden (TextBereiniger, Muster
GVBL_BERLIN_KOPF).
Artikel 3
Prüffall Berlin
Ein Test bis einschließlich der Befehlserkennung tritt hinzu
(EndToEndTest.asogLafAendGBerlin). Er hält das Ergebnis des Spaltenspikes fest —
die Befehle beider Artikel stehen unverschränkt in Lesereihenfolge — und prüft,
dass die beiden Punkte des Artikels 2 ihr Ziel aus der Änderungsformel erben.
Ein voller Akzeptanztest ist nicht möglich: gesetze.berlin.de ist wie das
schleswig-holsteinische Portal eine anmeldepflichtige juris-Anwendung.
Artikel 4
Unnummerierte, benannte Anlagen
Ein Gesetz mit einer einzigen Anlage benennt sie nach der Vorschrift, zu der sie
gehört („Die Anlage zu § 2 Absatz 4 Satz 1“). Der Stellenparser (StellenParser)
verlangte hinter „Anlage“ stets eine Nummer und wies solche Angaben zurück; der
Rahmenbefehl des Artikels 1 blieb deshalb unerkannt und seine Unterpunkte ohne
Kontext. Die Anlage trägt nunmehr — wie der „Anhang“ — die Bezeichnung „Anlage“.
Der benennende Zusatz wird übersprungen: Er reicht bis zum Ende der
Stellenangabe, und würde er mitgelesen, so läse der Parser das darin genannte
„§ 2“ als Änderungsziel und änderte die falsche Norm.
Damit ist zugleich die Annahme der Fassung vom 26. Juli 2026 richtigzustellen:
Anlagen sind als Änderungsziel unterstützt (im gii-XML sind sie eigene Normen,
Stelle.anlagenEnbez() löst sie auf). Offen bleibt allein, dass der
Landesrecht-Textparser keine Anlagen-Normköpfe kennt, eine handgepflegte
Stammfassung also keine Anlage tragen kann.
Artikel 5
Steuerzeichen und zerrissene Befehlsvokabeln
Der Textbereiniger (TextBereiniger) entfernt nunmehr C0-Steuerzeichen außer
Tabulator und Zeilenumbruch (Muster STEUERZEICHEN). Im GVBl. für Berlin trägt
der Einzug der Aufzählungsglieder ein U+0007; es steht unsichtbar vor dem Befehl
und ließ dessen Zeilenanfangs-Anker ins Leere greifen. Ebenso werden
Befehlsvokabeln zusammengeführt, die der amtliche Satz durch ein Leerzeichen
zerreißt („ein gefügt“ statt „eingefügt“) — beschränkt auf Fügungen, die als
Wortfolge im Deutschen nicht vorkommen.
Von den vier Befehlen des Artikels 1 werden damit drei erkannt. Der vierte
bestimmt die Einfügestelle über einen Wortanker („Vor den Wörtern „Aus dem
Bereich Verkehr:“ wird folgender Absatz 5 eingefügt“); eine Struktureinfügung
trägt bislang nur eine Stellenangabe. Beides ist in
sampledata/Landesrecht-Beispiele.adoc vermerkt.
════════════════════════════════════════════════════════════════════════════════
Fassung vom 25. Juli 2026,
zuletzt geändert durch die am 25. Juli 2026 vorgenommenen Änderungen
════════════════════════════════════════════════════════════════════════════════
Der Abschluss der sechsten und der Beginn der siebten Ertüchtigungswelle: Zwei
weitere Belegfälle treten hinzu.
Schleswig-Holstein (Artikel 1 bis 4): das Gesetz zur Änderung des Gesetzes zur
Änderung kommunalrechtlicher Vorschriften vom 26. März 2026 (GVOBl. Schl.-H.
2026/27). Es führt drei bislang unbekannte Eigenheiten ein — den laufenden Seiten-
kopf des GVOBl. Schleswig-Holstein, hochgestellte Fußnotenmarker an den Artikel-
Überschriften und einen Flattersatz, in dem die geometrische Randerkennung
versagt. Ein voller Akzeptanztest bleibt vorerst aus, weil die konsolidierte
Gemeindeordnung aus freien Quellen nicht in der maßgeblichen Fassung zu
beschaffen ist.
Nordrhein-Westfalen (Artikel 5 bis 7): Artikel 3 des 22. Rundfunkänderungsgesetzes
vom 24. März 2026 (GV. NRW. S. 202) ändert das Telemedienzuständigkeitsgesetz.
Alle vier Befehle werden erkannt und angewandt; das Ergebnis ist gegen die
amtliche Fassung vom 1. April 2026 abgeglichen. Dazu werden die Trennung von
Kurztitel und Abkürzung im Klammerzusatz und eine Strukturgrenze für unbalancierte
Anführungszeichen nötig.
Schließlich (Artikel 8 bis 10) werden die beiden niedersächsischen Einfügeformen
ertüchtigt, die bislang als Grenze dokumentiert waren; das Niedersächsische
ELER-Fördergesetz wird damit ohne Rest umgesetzt.
Artikel 1
Seitenkopf des Gesetz- und Verordnungsblatts für Schleswig-Holstein
Der Textbereiniger (TextBereiniger.istKolumnentitel) entfernt nunmehr auch den
zweizeiligen Titelkopf und den laufenden Seitenkopf des Gesetz- und Verordnungs-
blatts für Schleswig-Holstein („Gesetz- und Verordnungsblatt für Schleswig-
Holstein“ nebst „2026/27 vom 30. März“, Muster GVOBL_SH_KOPF, GVOBL_SH_LAND und
GVOBL_SH_HEFT). Der laufende Kopf steht zwischen zwei Artikeln und klebte sonst
an der folgenden Artikel-Überschrift.
Artikel 2
Fußnotenmarker an Artikel-Überschriften
Schleswig-Holstein verweist an der Artikel-Überschrift eines Änderungsgesetzes
mit einer hochgestellten Ziffer auf die Gliederungsnummer-Fußnote am Seitenfuß
(„Artikel 1 ¹)“). Solche Überschriften genügten dem Muster der Artikel-Teilung
(AenderungsgesetzParser.ARTIKEL_UEBERSCHRIFT) nicht. Der Textbereiniger streift
den Marker nunmehr ab (TextBereiniger.loeseArtikelFussnoten, Muster
ARTIKEL_FUSSNOTE) und trennt dabei eine in derselben Zeile stehende Einleitung
wieder ab.
Artikel 3
Silbentrennung bei hartem Zeilenende
Der Textbereiniger (TextBereiniger.verbindeUmbrueche) zog eine Silbentrennung am
Zeilenende bislang nie zusammen, wenn die geometrische Randerkennung des
Fontgrößenfilters ein hartes Zeilenende meldete. Im Flattersatz — wie ihn das
GVOBl. Schl.-H. verwendet — findet diese Erkennung jedoch keinen Ausrichtungs-
Cluster und stuft auch volle Zeilen als hart ein. Klebt der Trennstrich ohne
Trailing-Whitespace am Zeilenende, ist er deshalb nunmehr auch dort als
Silbentrennung zu lesen; bewusst gesetzte Suspensivstriche tragen den Trailing-
Whitespace des Extraktors und bleiben unberührt.
Artikel 4
Belegfall Kommunalrecht-Änderungsgesetz Schleswig-Holstein
Als weiterer Prüffall tritt ein Test bis einschließlich der Befehlserkennung
hinzu (EndToEndTest.kommunalrechtAendGSchleswigHolstein): Artikel 1 trifft die
Gemeindeordnung, Artikel 2 die Kreisordnung, Artikel 3 ein anderes Änderungs-
gesetz; je Zielgesetz wird genau ein Neufassungsbefehl („§ 34a Absatz 1 erhält
folgende Fassung“, „§ 29a Absatz 1 …“) erkannt, kein Befehl bleibt unbekannt.
Ein voller Akzeptanztest ist nicht möglich: Das Landesportal
gesetze-rechtsprechung.sh.juris.de gibt seine Dokumentinhalte nur über eine
anmeldepflichtige Schnittstelle aus, und die letzte frei archivierte Gesamt-
ausgabe der Gemeindeordnung (14. November 2022) kennt den geänderten § 34a noch
nicht. Die Fundstelle ist in sampledata/Landesrecht-Beispiele.adoc vermerkt.
Artikel 5
Kurztitel und Abkürzung im Klammerzusatz
Der Landesrecht-Textparser (LandesRechtTextParser) las den Klammerzusatz der
Titelzeile stets als Abkürzung. Landesgesetze führen dort jedoch häufig Kurztitel
und Abkürzung nebeneinander („(Telemedienzuständigkeitsgesetz – TMZ-Gesetz)“,
„(Gemeindeordnung – GO –)“), und das Änderungsgesetz zitiert das Stammgesetz mit
dem Kurztitel, nicht mit der Abkürzung; die Artikelauswahl
(AenderungsgesetzParser.betrifft) griff deshalb nicht. Der Parser trennt den
Klammerzusatz nunmehr am Gedankenstrich (Muster KURZTITEL_TRENNER) und führt den
Kurztitel als Kurzüberschrift des Gesetzes.
Artikel 6
Strukturgrenze bei unbalancierten Anführungszeichen
Der Zitatextraktor (ZitatExtraktor) schlug den gesamten Folgetext einem Zitat zu,
wenn im amtlichen Satz ein schließendes Anführungszeichen fehlte. Im 22. Rundfunk-
änderungsgesetz (Artikel 2 Nr. 11) ist das der Fall; das offene Zitat verschlang
dort die Artikel 3 bis 5, sodass überhaupt kein Änderungsbefehl mehr gefunden
wurde. Ein Änderungsgesetz zitiert jedoch nie über eine Artikel-Überschrift
hinweg. Der Extraktor schließt ein offenes Zitat deshalb vor einer Zeile, die nur
aus „Artikel N“ besteht, und meldet dies als Warnung. Zitierte Paragraphen bleiben
unberührt, weil das bayerische Landesrecht seine Normköpfe als „Art. N“ führt.
Artikel 7
Belegfall Telemedienzuständigkeitsgesetz
Als weitere Beispieldaten treten die konsolidierte Vorfassung des TMZ-Gesetzes
(sampledata/NRW/TMZ-Gesetz-alt.txt, kanonischer Klartext, Fassung vom 27. April
2022 aus der Fassungshistorie von recht.nrw.de) und ein End-to-End-Akzeptanztest
(EndToEndTest.tmzGesetzAcceptance) hinzu: Von den vier Befehlen des Artikels 3
werden alle angewandt — die Neufassung der Gesetzesüberschrift, die Neufassung des
§ 1 Absatz 2, die Fundstellen-Ersetzung im Satzteil vor Nummer 1 des § 2 und die
Neufassung der Nummern 1 und 2 des § 2. Die Artikel 1, 2 und 4 desselben Heftes
(WDR-Gesetz, Landesmediengesetz, Siebzehnter Rundfunkänderungsstaatsvertrag
Ausführungsgesetz) werden zutreffend nicht gewählt.
Artikel 8
Sachnummern mit Leerzeichen
Niedersachsen zitiert eingeschobene Paragraphen mit einem Leerzeichen vor der
Sachnummer („§ 2 a“), die übrige Rechtssprache ohne („§ 2a“). Stellen- und
Ebenenparser erkannten die niedersächsische Form nicht. Der Textbereiniger zieht
sie nunmehr auf die kanonische Form zusammen (Muster SACHNUMMER_MIT_LEERZEICHEN);
ein folgender Aufzählungsmarker des Änderungsgesetzes („… nach § 8 c) In Absatz 2
…“) bleibt ausgenommen.
Artikel 9
Gliederungsbezogene Einfügung eines Paragraphen
Der Befehlserkenner (BefehlErkenner) erkannte die Einfügung eines Paragraphen nur
in der ankergeführten Form („Nach § 12 wird der folgende § 13 angefügt“). Die
gliederungsbezogene Form „In Kapitel 4 wird nach § 12 der folgende neue § 13
angefügt“ tritt hinzu (Muster STRUKTUR_EINFUEGUNG_IN_GLIEDERUNG); die
Gliederungsangabe nennt nur den Abschnitt, maßgeblich für die Position bleibt der
Anker. Zugleich wird das Beiwort „neu“ in beiden Formen zugelassen.
Artikel 10
Vorrang der Umnummerierung vor der Neubesetzung
Der Befehlsanwender (BefehlAnwender) wandte die Befehle stets in der Reihenfolge
des Änderungsgesetzes an. Besetzt eine Einfügung einen Paragraphen neu, dessen
bisheriger Träger erst durch einen nachfolgenden Befehl umnummeriert wird („In
Kapitel 4 wird nach § 12 der folgende neue § 13 angefügt“ vor „Der bisherige § 13
wird § 14“), so führte das auf zwei Paragraphen gleicher Bezeichnung und die
Einfügung wurde zurückgewiesen. Das Wort „bisherig“ bezeichnet den Stand vor der
Änderung; die Umnummerierung geht der Neubesetzung sachlich voraus und wird
deshalb vorgezogen (BefehlAnwender.anwendungsReihenfolge). Protokolliert wird
weiterhin in der Reihenfolge des Änderungsgesetzes.
════════════════════════════════════════════════════════════════════════════════
Fassung vom 24. Juli 2026,
zuletzt geändert durch die am 24. Juli 2026 vorgenommenen Änderungen
════════════════════════════════════════════════════════════════════════════════
Die sechste Ertüchtigungswelle wird um den ersten nichtbayerischen Landesrecht-
Belegfall ergänzt: das paragraphengegliederte Sächsische Beamtenversorgungsgesetz
(SächsBeamtVG) in seiner Fassung vom 1. Februar 2025 nebst dem Gesetz zur Änderung
des SächsBeamtVG vom 13. April 2026 (SächsGVBl. S. 134). Alle fünf Befehle werden
erkannt und angewandt. Dazu wird der Landesrecht-Textparser um die in den meisten
Ländern übliche arabische Gliederungsform ertüchtigt und die Fußzeile der revosax-
Volltextausgabe als Kolumnentitel entfernt.
Artikel 1
Arabische, schlüsselwort-erste Gliederungs-Überschriften
Der Landesrecht-Textparser (LandesRechtTextParser) erkannte Gliederungs-
Überschriften bislang allein in der bayerischen Form „I. Abschnitt Titel“ (römische
Zählung, nachgestelltes Schlüsselwort). Die übrigen Länder gliedern in der Form
„Abschnitt 1“, „Unterabschnitt 2“, „Teil 3“ (arabische Zählung, vorangestelltes
Schlüsselwort, Titel auf der Folgezeile). Der Parser wird um ein entsprechendes
Muster (GLIEDERUNG_ARABISCH) ergänzt, das solche Überschriften — nach der
kanonischen Zusammenführung von Schlüsselwort, Nummer und Titel auf eine Zeile —
als Gliederungsgrenzen erkennt. Das bayerische Verhalten bleibt unberührt.
Artikel 2
Fußzeile der revosax-Volltextausgabe
Der Textbereiniger (TextBereiniger.istKolumnentitel) entfernt nunmehr auch die
Fußzeile der Volltextausgaben des sächsischen Rechtsportals revosax
(„https://www.revosax.sachsen.de Fassung vom 13.04.2026 Seite 1 von 1“, Muster
REVOSAX_FUSS), die Herausgeber-URL, Fassungsdatum und Seitenangabe trägt.
Artikel 3
Belegfall Sächsisches Beamtenversorgungsgesetz
Als Beispieldaten treten die konsolidierte Vorfassung des SächsBeamtVG
(sampledata/Sachsen/SaechsBeamtVG-alt.txt, kanonischer Klartext, aus der
archivierten revosax-Volltextfassung abgeleitet) und ein End-to-End-Akzeptanztest
(EndToEndTest.saechsBeamtVgAcceptance) hinzu: Die Ersetzungen in § 47 (Einmalige
Unfallentschädigung) und die Neufassung des § 80 Absatz 1 Satz 2 (Allgemeine
Anpassung) werden vollständig angewandt, ohne Rest.
Artikel 4
Normköpfe tragen keine ganzen Sätze
Der Landesrecht-Textparser (LandesRechtTextParser) las einen am Zeilenanfang
stehenden Querverweis-Satz („§ 7 GAPInVeKoSG findet entsprechend Anwendung.“) als
Normkopf „§ 7“, wodurch die dazwischenliegenden Normen der Monotonie-Prüfung zum
Opfer fielen. Ein Normkopf trägt jedoch eine Überschrift, keinen ganzen Satz;
deshalb schließt das Normkopf-Muster nunmehr Titel aus, die auf einen Punkt enden.
Artikel 5
Fußzeile und Herausgeberzeile des Niedersächsischen GVBl
Der Textbereiniger (TextBereiniger.istKolumnentitel) entfernt nunmehr auch die
laufende Fußzeile des Niedersächsischen Gesetz- und Verordnungsblatts („Nds. GVBl.
2026 Nr. 10 vom 4. Februar 2026 Seite 2“) und die Herausgeberzeile. Die zwischen
zwei Aufzählungsgliedern stehende Fußzeile hängte sich sonst an das voranstehende
Neufassungs-Zitat, sodass dessen Satzende-Anker nicht mehr griff.
Artikel 6
Belegfall Niedersächsisches ELER-Fördergesetz
Als weitere Beispieldaten treten die konsolidierte Fassung des seit 2022
unveränderten NEFG (sampledata/Niedersachsen/NEFG-alt.txt, kanonischer Klartext,
aus dem zweispaltig gesetzten Nds. GVBl 2022 Nr. 33 abgeleitet) und ein
End-to-End-Akzeptanztest (EndToEndTest.nefgAcceptance) hinzu: Von den sieben
Befehlen werden fünf angewandt — darunter zwei Neufassungen „erhält folgende
Fassung“ (§ 1 Abs. 1, § 2), die Angaben-Ersetzung in § 1 Abs. 5, die
Wörter-Einfügung in § 6 Abs. 1 und die Umnummerierung § 13 → § 14. Zwei
Einfügeformen bleiben als „manuell prüfen“ stehen (bewusst dokumentierte Grenze):
die Einfügung eines §-Blocks mit durch Leerzeichen getrennter Sachnummer („§ 2 a“)
sowie die kapitelbezogene §-Block-Einfügung („In Kapitel 4 wird nach § 12 …
angefügt“).
════════════════════════════════════════════════════════════════════════════════
Fassung vom 19. Juli 2026,
zuletzt geändert durch die am 19. Juli 2026 vorgenommenen Änderungen
════════════════════════════════════════════════════════════════════════════════
In einer sechsten Ertüchtigungswelle wird das Erzeugnis über das bayerische
Landesrecht hinaus für das Landesrecht der übrigen Länder vorbereitet. Da diese
ihre Stammgesetze — anders als Bayern — in Paragraphen gliedern, wird der
bayerische Lader zu einem gemeinsamen Landesrecht-Lader verallgemeinert, der das
Sigel (§ oder Art.) je Norm aus dem Text ableitet; der Superskript-Modus folgt
nunmehr datengetrieben der Schreibweise des Stammgesetzes. Ferner wird die in
mehreren Ländern übliche Neufassungsform „erhält folgende Fassung“ erkannt. Als
Beispieldaten sind bereits Änderungsgesetze aus acht Ländern hinterlegt
(sampledata: Berlin, Schleswig-Holstein, Hessen, Niedersachsen, Baden-Württem-
berg, Nordrhein-Westfalen, Sachsen, Thüringen); ihre konsolidierten Stammfassungen
und die dazugehörigen Akzeptanzfälle folgen in weiteren Fassungen dieser Welle.
Artikel 1
Verallgemeinerung des bayerischen Laders zu einem Landesrecht-Lader
Die Klassen BayRechtLoader und BayRechtTextParser (Paket gesetz.bayern) werden zu
LandesRechtLoader und LandesRechtTextParser (Paket gesetz.land) verallgemeinert.
Der Normkopf erkennt statt allein „Art. N“ nunmehr „§ N“ wie „Art. N“ und leitet
das Sigel je Norm aus dem Treffer ab (Norm.enbez), sodass die Gliederung des
jeweiligen Landes ohne ein eigenes Land-Merkmal folgt. Das Querverweis-
Schlüsselwort im Normkopf wird nur noch als ganzes Wort ausgeschlossen, damit ein
Normtitel wie „Satzungen“ nicht am Verweis-Wort „Satz“ scheitert; die
Juris-Abkürzung darf mehrteilig sein („(GO NRW)“). Das bayerische Verhalten
bleibt unverändert.
Artikel 2
Datengetriebener Superskript-Modus aus der Stammfassung
Ob ein Änderungsgesetz mit Erhalt der hochgestellten amtlichen Satznummern
extrahiert wird, richtet sich nicht mehr danach, ob das Stammgesetz als gii-XML
vorliegt, sondern danach, ob die geladene Stammfassung selbst amtliche Satznummern
am Satzanfang trägt (Superskript.traegtSatznummern). Damit erhalten das bayerische
Landesrecht und das niedersächsische Recht ihre Superskripte, das Bundesrecht und
die Länder ohne amtliche Satzzählung verwerfen sie wie bisher.
Artikel 3
Erkennung der Neufassungsform „erhält folgende Fassung“
Der Befehlserkenner erkennt die Neufassung nunmehr auch in der in Schleswig-
Holstein und Niedersachsen üblichen Form „… erhält (erhalten) folgende Fassung:“,
neben der bisherigen Form „… wird (werden) wie folgt gefasst:“. Die Erweiterung
ist rein zusätzlich (Verb-Baustein NEUFASSUNG_VERB) und lässt die Muster des
Bundes- und des bayerischen Rechts unberührt.
════════════════════════════════════════════════════════════════════════════════
Fassung vom 17. Juli 2026,
zuletzt geändert durch die am 17. Juli 2026 vorgenommenen Änderungen
════════════════════════════════════════════════════════════════════════════════
Auf Grund eines gemeldeten Wiedergabefehlers wird der Textbereiniger um eine
geometrische Zeilenend-Klassifikation auf Basis von PDFBox-Koordinaten ergänzt;
ferner wird die Strukturierung hängend eingerückter Definitionslisten (z.B. im
UWG-Anhang) sowohl im PDF-Extraktor als auch im XML-Flattener vereinheitlicht.
Sodann wird das Erzeugnis in einer fünften Ertüchtigungswelle für das Landes-
recht des Freistaates Bayern ertüchtigt (Artikel 4 bis 10): Stammgesetze in
Artikel-Gliederung aus der konsolidierten Fassung von gesetze-bayern.de,
paragraphengegliederte Änderungsgesetze aus dem Bayerischen Gesetz- und
Verordnungsblatt und aus Landtags-Drucksachen, amtliche Satznummern als
Superskripte sowie die bayerischen Befehlsformen. Belegfall ist das Gesetz zur
Änderung des Bayerischen Jagdgesetzes und weiterer Rechtsvorschriften vom
26. März 2026 (GVBl. S. 113) nebst Regierungsentwurf (Ltg-Drs. 19/9707).
Artikel 1
Geometrische Klassifikation der Zeilenenden nach Ausrichtungs-Clustern
Der Textbereiniger (TextBereiniger.verbindeUmbrueche) zog eine Zeile, die ohne
Leerraum am Ende mit einem Buchstaben schließt und deren Folgezeile klein
beginnt, bislang stets ohne Trennzeichen mit der Folgezeile zusammen, in der
Annahme, es handle sich um eine bei der PDF-Extraktion um den Bindestrich
gebrachte Silbentrennung. Diese Annahme trifft auf einen bewussten Wortgrenzen-
Umbruch (etwa das Stichwort einer hängend eingerückten Definition, wie er im
Anhang zum UWG vorkommt) nicht zu. Zur Behebung bestimmt der PDF-Vorverarbeiter
(FontgroessenFilter) das geometrische End-X jeder Zeile (unter Flush auch am
Seitenende, damit die letzte Zeile einer Seite nicht die erste der Folgeseite
verfälscht) und klassifiziert die Zeilenenden anhand von Ausrichtungs-Clustern
in einem Fenster von 20 Zeilen davor/danach: Ein Zeilenende ist weich, wenn
mindestens fünf Fensterzeilen (auf vier Punkt genau) gleich ausgerichtet enden
(Satzspiegelrand des Blocksatzes), und hart, wenn ein solcher Rand mindestens
zehn Punkt oberhalb des Zeilenendes verläuft — dort wäre noch Platz gewesen,
der Umbruch ist mithin gewollt. Cluster statt eines Fenster-Perzentils, weil am
Spaltenwechsel des zweispaltigen alten Bundesgesetzblatts beide Spaltenränder
in ein Fenster fallen; maßgeblich ist der Rand, an dem die Zeile selbst
ausgerichtet ist. Der Textbereiniger zieht markerlose Umbrüche nur noch bei
weichen Zeilenenden zusammen (in Ermangelung von Geometriedaten näherungsweise
nach Zeichenzahl wie bisher), nie jedoch vor einer Folgezeile, die mit einem
Aufzählungsmarker („d)“, „3.“) beginnt.
Artikel 2
Zusammenzug weicher und Erhaltung harter Umbrüche
Nach den Einzelzusammenzügen fügt der Textbereiniger geometrisch weiche
Zeilenenden mit einem Leerzeichen zu Fließtext zusammen (Reflow); harte und
unklassifizierte Umbrüche bleiben erhalten. Nach der Bereinigung ist damit
jeder verbleibende Zeilenumbruch nach bester Einschätzung beabsichtigt, weshalb
die Zitat-Normalisierung des Befehlsanwenders (normalisiereZitatText) Umbrüche
nicht mehr zu Leerzeichen faltet. Ausgenommen vom Reflow sind Strukturzeilen
(„Artikel 2“, „§ 19“, allein stehende Gliederungs-Bezeichnungen): Gleich
breite, zentrierte Überschriften in Serie bilden ein Schein-Cluster, der Parser
benötigt sie jedoch allein auf der Zeile.
Artikel 3
Strukturierung und Normalisierung hängend eingerückter Definitionslisten
Damit die nunmehr erhaltenen hängenden Zeilenenden in Definitionslisten (wie
beim UWG-Anhang oder in § 2 IfSG) korrekt strukturiert werden:
1. Der XML-Flattener (ContentFlattener) trennt mehrere <LA>-Geschwister innerhalb
eines <DD>-Elements durch Zeilenumbrüche und rückt die Folgezeilen tiefer ein
als die Aufzählungszeile (Kindzeilen der Einheit für die Stellenauflösung).
2. Der Befehlsanwender rückt beim Einsetzen von Zitattext (rueckeZitatEin)
Fortsetzungszeilen zwei Zeichen tiefer ein als die Aufzählungszeile.
Beide Wege erzeugen dieselbe kanonische Zeilenform („ 2a. Stichwort“ nebst
„ Definitionstext“), welche für die korrekte Erkennung von Kindzeilen durch
die Stellenauflösung (StellenAufloeser.zeilenBlock) erforderlich ist.
Artikel 4
Verallgemeinerung der Normbezeichnung auf das Artikel-Sigel
Die Stellenkomponente des Paragraphen (Stelle.Paragraph) führt neben der Nummer
nunmehr das Sigel („§“ oder „Art.“) und bildet daraus die Einzelnormbezeichnung
(enbez). Der Stellenparser (StellenParser) nimmt „Art.“ als Normbezeichnung
sowie durchgehend die abgekürzten und deklinierten Einheitenwörter an („Abs.“,
„Nr.“, „Nrn.“, „Buchst.“, „Sätzen“, „Absätzen“); ferner wird die Komponente des
Halbsatzes eingeführt (Auflösung durch Teilung des Satzes am Semikolon) und
werden koordinierte Stellen mit nachgestellten Komponenten („Art. 18 Satz 2,
Art. 19 und 20 Satz 1“) entfaltet. Befehlserkenner und Befehlsanwender bilden
sämtliche bisher auf das „§“-Zeichen festgelegten Muster auf beide Sigel ab;
das Verhalten gegenüber Bundesrecht bleibt unverändert.
Artikel 5
Amtliche Satznummern als Superskripte
Bayerische Normtexte führen amtliche Satznummern als hochgestellte Ziffern.
Der PDF-Vorverarbeiter (FontgroessenFilter) erhält einen Superskript-Modus:
Ziffernfolgen, die kleiner gesetzt und gegenüber der Grundlinie ihres Laufs um
zwei bis sechs Punkt gehoben sind, werden als Unicode-Superskripte (¹ ² ³)
übernommen statt verworfen — im selben Lauf klebende Satznummern und Fußnoten-
marker („Enteignung⁶)“) eingeschlossen. Der Satzteiler (SatzTeiler) teilt
nummerierte Texte exakt an den Satznummern und stellt die Nummer eines Satzes
bereit; die Stellenauflösung löst Satzangaben in nummerierten Texten nach dem
amtlichen Label statt nach der Position auf. Die Satz-Umnummerierung schreibt
die Satznummer im Text um („Satz 5 wird Satz 4“ → „⁵“ wird „⁴“). Für Bundes-
recht (Modus „Entfernen“) bleibt das Verhalten unverändert.
Artikel 6
Kolumnentitel des GVBl und des Bayerischen Landtags; geschützte Leerzeichen
Der Textbereiniger entfernt die Kolumnentitel des Bayerischen Gesetz- und
Verordnungsblatts (mit links- oder rechtsstehender, auch an die Jahreszahl
geklebter Seitenzahl: „… Nr. 6/202676“) sowie die Titel- und Seitenköpfe der
Landtags-Drucksachen; eine am Seitenwechsel unterbrochene Silbentrennung heilt
nach der Kopfentfernung („kurz-“ + „fristige“). Geschützte Leerzeichen des
GVBl-Satzes („§ 1“, „Abs. 2“) werden früh auf gewöhnliche Leerzeichen
normalisiert, da sie für die Muster des Parsers unsichtbar sind. Die Struktur-
zeilen-Ausnahme des Reflows erfasst nunmehr auch „Art. N“.
Artikel 7
Paragraphengegliederte Änderungsgesetze; Rahmenbefehl im Vorspann;
Fortführungszeichen
Bayerische Änderungsgesetze gliedern sich in Paragraphen. Der Parser
(AenderungsgesetzParser) teilt ein Dokument ohne Artikel-Überschriften an
freistehenden „§ N“-Zeilen; die Auswahl über den Einleitungssatz (betrifft)
bleibt maßgeblich und wählt auch die „Weitere Änderung“ desselben Stamm-
gesetzes. Nennungen des Stammgesetzes als Genitiv-Attribut eines Ausführungs-
oder Durchführungstitels („Verordnung zur Ausführung des Bayerischen Jagd-
gesetzes“) zählen nicht als Treffer. Trägt der Vorspann nach der gesetzesweiten
Änderungsformel einen Rahmenbefehl („… wird wie folgt geändert: Art. 28 Abs. 1
wird wie folgt geändert:“) oder das Ziel eingebettet in der Formel selbst
(„Art. 7 Abs. 2 des X-Gesetzes … wird wie folgt geändert:“), so wird dieses
Ziel Kontext aller Gliederungspunkte. Der Zitatextraktor behandelt das
Fortführungszeichen des GVBl (jedes neugefasste Aufzählungsglied öffnet am
Zeilenanfang erneut mit „, geschlossen wird einmal am Blockende) als
Typografie statt als geschachteltes Zitat; der Begründungs-Abschneider nimmt
auch „Begründung:“ an. Ein GVBl-Heft, das zugleich ein artikelgegliedertes
Änderungsgesetz enthielte, unterdrückte die Paragraphen-Teilung — Ausweg ist
die Handkorrektur über --extract-only.
Artikel 8
Stammgesetz-Lader für das bayerische Landesrecht
Das neue Paket gesetz/bayern liest ein Stammgesetz aus der konsolidierten
Fassung von gesetze-bayern.de — als PDF (über den Superskript-erhaltenden
Extraktionsweg) oder als kanonischen Klartext im Format der --extract-only-
Ausgabe (BayRechtLoader, BayRechtTextParser). Erfasst werden Titelblock,
Gliederungs-Überschriften samt nummerierten Unter-Überschriften (synthetische
Kennzahlen), Normköpfe „Art. N“ (Querverweise am Zeilenanfang werden über eine
Negativliste und die Monotonie der Artikelnummern ausgeschlossen; vom Reflow an
ein Satzende geklebte Normköpfe werden am doppelten Leerzeichen erkannt und
wieder abgetrennt), aufgehobene Artikel sowie Fußnotenzeilen („⁶) [Amtl.
Anm.:] …“), die superskript-normalisiert im tragenden Absatz verbleiben. Die
Befehlszeile (AendGgner) wählt den Lader nach dem Dateityp des Stammgesetzes
(XML → gii, PDF/Klartext → Bayern) und extrahiert Änderungsgesetze dann im
Superskript-Modus.
Artikel 9
Bayerische Befehlsformen
Der Befehlserkenner und der Befehlsanwender werden ergänzt um: die Aufhebung
von Fußnoten („Fußnote 1 wird aufgehoben“, auch mehrere — entfernt Fußnoten-
zeile und Inline-Marker der Kontextnorm), die Streichung der Satznummerierung
(„In Satz 1 wird die Satznummerierung „1“ gestrichen“), die Wortlaut-Formen
(„Der Wortlaut wird Satz 1“, „Der bisherige Wortlaut wird Abs. 5“ — erhält nur
der einzige unnummerierte Absatz die Nummer —, „Dem Wortlaut werden die
folgenden Abs. 1 bis 4 vorangestellt“ nebst lokativer Folgeklausel auf den
nummerierten Absatz), stellenlose und koordinierte Streichungen („Die Angabe
„X“ wird gestrichen“, „werden die Angabe „X“ und die Angabe „Y“ gestrichen“),
Ersetzungspaare mit „sowie“ und Einfügepaare mit Komma-Reihung, Bereichs- und
Koordinations-Umnummerierungen in abgekürzter Form („Die bisherigen Abs. 1
bis 3 werden die Abs. 2 bis 4“) sowie Klauselketten mit gemeinsamem Schluss-
verb („… wird durch … und … wird durch … ersetzt“). Die Absatz-Umnummerierung
greift nur noch, wenn der Absatz selbst das Ziel ist (bei „Satz 5 wird Satz 4“
stammt die Absatzangabe aus dem Kontextrahmen und der Satz-Zweig ist
zuständig).
Artikel 10
Feinbehandlung von Satzgrenzen, Fußnoten und mehrschrittigen Aufhebungen bei
der Anwendung
Aus der vollständigen Anwendung der bayerischen Belegnovelle auf die (nach
Artikel 8 wiederhergestellte) alte Jagdgesetz-Fassung ergeben sich folgende
Verfeinerungen des Satzteilers, des Befehlserkenners und des Befehlsanwenders:
1. Der Satzteiler (SatzTeiler) bestimmt die Satzgrenzen fortan als Textanfang
zuzüglich der Fundstelle jeder amtlichen Satznummer ab „²“. Eine allein
stehende Nummer ≥ 2 — sei es, weil der erste Satz keine Nummer trägt, sei es,
weil seine Nummer zuvor gestrichen wurde („Verboten ist … ²Art. 33 …“) —
bildet damit eine eigene Grenze. Als Satzanfang gilt eine Satznummer auch vor
einem Paragraphzeichen („³§ 23 …“).
2. Fußnoten-Definitionszeilen („⁶) [Amtl. Anm.:] …“) sind für die wortweisen
Operationen (Streichen, Ersetzen, Einfügen) kein Inhalt: Sie werden vor der
Operation abgetrennt und danach unverändert wieder angefügt, sodass die
Streichung eines Fußnotenmarkers („die Angabe „¹)“ wird gestrichen“) den in
den Text eingebetteten Marker trifft, nicht aber den gleichlautenden Kopf der
Definitionszeile (deren Beseitigung der Fußnoten-Aufhebung vorbehalten bleibt).
3. Die Aufhebung eines durch seine Bezeichnung benannten Absatzes markiert
diesen — unter Beibehaltung seiner Nummer — als weggefallen. Eine nachfolgende
Absatz-Umnummerierung auf eine Zielnummer, die bereits von einem leeren Platz-
halter (weggefallen oder gegenstandslos) belegt ist, überschreibt diesen
(in Entsprechung zur Umnummerierung auf eine weggefallene Zielnorm), sodass
Folgen wie „Abs. 2 wird aufgehoben; Abs. 3 wird Abs. 2 …“ vollständig aufgehen.
4. In einem Verbund erbt eine reine Wortoperation ohne eigenen Lokativ den Skopus
der linken Klausel („In Abs. 2 Satz 1 wird „A“ ersetzt und die Angabe „B“ wird
gestrichen“ wirkt für beide Klauseln auf Abs. 2 Satz 1); das gemeinsame Verb
wird hierzu in die grammatische Normalform vorgezogen.
Schlussbestimmung
Die vorstehenden Änderungen sind durch die Prüfung sämtlicher Testfälle (zwei-
hundertelf an der Zahl) sowie durch die vollständige Erstellung (mvnw verify)
bestätigt worden. Die Behebung des eingangs genannten Wiedergabefehlers wurde
anhand der Beispieldaten (UWG-Anhang, Nummern 2a, 4c sowie 22; § 2 IfSG)
verifiziert; die Anwendungs- und Prüfzahlen der bundesrechtlichen Beispiele (UWG,
AGG, ProdHaftG, GEG, IfSG) bleiben durchgehend unverändert. Die Ertüchtigung für
das bayerische Landesrecht ist durch die vollständige Anwendung der Belegnovelle
(GVBl. 2026 S. 113, §§ 1 und 2) auf die wiederhergestellte alte Fassung des
Bayerischen Jagdgesetzes belegt: Von einhundertvierundfünfzig Änderungsanweisungen
werden einhundertneunundvierzig selbsttätig angewandt; keine bleibt unerkannt.
Die fünf verbleibenden Anweisungen sind Folgeänderungen innerhalb zweier mehr-
schrittiger Umnummerierungssequenzen (Neunummerierung des Bußgeldkatalogs in
Art. 56 sowie die Absatzverschiebung in Art. 29a) und werden — statt fehlerhaft
gedeutet zu werden — mit Begründung dem Abschnitt „Manuell prüfen“ zugewiesen.
Der Regierungsentwurf (Ltg-Drs. 19/9707) wird auf derselben Grundlage verarbeitet.
════════════════════════════════════════════════════════════════════════════════
Fassung vom 16. Juli 2026,
zuletzt geändert durch die am 16. Juli 2026 vorgenommenen Änderungen
════════════════════════════════════════════════════════════════════════════════
Auf Grund der vierten Ertüchtigungswelle werden Anhänge und Anlagen als Norm-Ziele,
die Angabe-Befehle der Inhaltsübersicht sowie die Einfügung und Ersetzung von
Gliederungs-Überschriften einer Verarbeitung zugänglich gemacht; ferner wird der
Befehlserkenner um weitere Verbund- und Bereichsformen sowie die Neufassung der
Gesetzesüberschrift ergänzt und die Brotschriftbestimmung des PDF-Vorverarbeiters
seitenweise gefasst.
Artikel 1
Anhänge und Anlagen als Norm-Ziele
Die Stelle (Stelle) wird um die Unterscheidung zwischen echten Gliederungseinheiten
(Teil, Abschnitt, Unterabschnitt und dergleichen) und Anhängen/Anlagen ergänzt
(betrifftEchteGliederung, anlagenEnbez); Anhänge und Anlagen sind im gii-XML eigene
Normen mit Text und werden fortan wie Paragraphen behandelt. Der Stellenaufloeser
löst hierbei Nummer- und Buchstabe-Ketten verschachtelt und blockweise auf: die
Aufzählungszeile einer Nummer oder eines Buchstabens wird um ihre tiefer
eingerückten Kindzeilen erweitert, und eine Angabe ohne Absatzbezeichnung wird
norm-weit gesucht, sofern sie in genau einem Absatz auffindbar ist.
Artikel 2
Selbsttätige Anwendung der Inhaltsübersichts-Angaben
Es wird der Anwender InhaltsuebersichtAnwender eingeführt, der die Angabe-Befehle
(gefasst, ersetzt, eingefügt, gestrichen sowie die Neufassung der gesamten
Übersicht) auf das Zeilenmodell der Inhaltsübersichts-Norm anwendet. Eine adressierte
Zeile wird anhand der Gliederungs- und Paragraphen-Kette der Stelle verschachtelt
gesucht, wobei gleichrangige Gliederungseinheiten als Fenstergrenzen dienen. Bei der
Neufassung der gesamten Übersicht schützt eine Plausibilitätssperre vor der
Übernahme eines Zitats, das durch ein unbalanciertes Anführungszeichen Befehlssprache
nachfolgender Anweisungen mitgerissen hat; ein solcher Fall wird dem Abschnitt
„Manuell prüfen“ zugewiesen.
Artikel 3
Einfügung und Ersetzung von Gliederungs-Überschriften
Es wird der Befehl „GliederungsUeberschriften“ eingeführt; die Anweisungen „Nach
§ N werden die folgenden Überschriften zu ... eingefügt: „…““ sowie „Die bisherigen
Überschriften zu ... werden durch die folgende Überschrift zu ... ersetzt: „…““
legen neue Einheiten im Gliederungsbaum an beziehungsweise ersetzen bisherige
Einheiten durch neue. Der Befehlsanwender (BefehlAnwender.wendeGliederungsUeberschriftenAn)
zieht die Titel der neuen Einheiten aus dem Zitat und ordnet sie an der Stelle der
ersetzten Einheiten beziehungsweise hinter dem Einfügeanker ein. Ferner wird die
Neufassung der Gesetzesüberschrift selbst („Die Überschrift wird wie folgt gefasst“
ohne weitere Stellenangabe) erkannt und auf den Langtitel des Gesetzes angewandt.
Artikel 4
Weitere Erweiterungen des Befehlserkenners
Der Befehlserkenner (BefehlErkenner) wird um Voranstellungen, Mehrfach-Ersetzungs-
und -Einfügepaare, Bereichsziele auf Nummern und Buchstaben, zusammengesetzte
Komma-Mehrfachpaare sowie Umnummerierungs-Verbünde („§ 50 wird zu § 38 und wird wie
folgt geändert: ...“) ergänzt.
Artikel 5
Seitenweise Brotschriftbestimmung
Der Fontgrößenfilter (FontgroessenFilter) bestimmt die Brotschrift fortan seitenweise
statt dokumentweit: Auf jeder Seite gilt die größte Fontgröße mit mindestens 25 vom
Hundert Seitenanteil als Brotschrift, wobei eine absolute Mehrheit ab 60 vom Hundert
sofort entscheidet; Fußnoten werden als Kleingedrucktes unterhalb der letzten
Brotschriftzeile erkannt, Seitenfüße bleiben hiervon ausgenommen. Der Textbereiniger
(TextBereiniger) wird um die Toleranz weiterer Drucksachen-Artefakte (Seitenköpfe
und -füße, Vorabfassungs-Wasserzeichen, vertauschte oder gerade Anführungszeichen,
verklebte Wortgrenzen) ergänzt.
Schlussbestimmung
Die vorstehenden Änderungen sind durch die Prüfung sämtlicher Testfälle (einhundert-
dreiundsiebzig an der Zahl) sowie durch die vollständige Erstellung (mvnw verify)
bestätigt worden. Auf den Beispieldaten werden nunmehr sämtliche Befehle der
BGBl-Fassungen sowie der geprüften Entwürfe angewandt (UWG, AGG und ProdHaftG:
0 manuell). Nicht selbsttätig verarbeitbar bleiben einstweilen Befehle gegen eine
ältere, im XML-Bestand nicht mehr vorhandene Gesetzesfassung sowie vereinzelte,
durch Extraktionsverluste im Quell-PDF verursachte Zitatlücken; diese werden
weiterhin, mit Begründung versehen, dem Abschnitt „Manuell prüfen“ zugewiesen. Die
Unterstützung des bayerischen Landesrechts bleibt einem späteren Zeitpunkt
vorbehalten.
════════════════════════════════════════════════════════════════════════════════
Fassung vom 15. Juli 2026,
zuletzt geändert durch die am 15. Juli 2026 vorgenommenen Änderungen
════════════════════════════════════════════════════════════════════════════════
Auf Grund der weiteren Ertüchtigung des Befehlserkenners und des Befehlsanwenders
werden Bereichs- und Koordinationsziele bei Struktur-Ersetzungen, die Streichung
und Umnummerierung ganzer Struktureinheiten (Paragraphen und Gliederungs-
einheiten) sowie das Einfügen und Ersetzen ganzer Paragraphenblöcke einer
Verarbeitung zugänglich gemacht.
Artikel 1
Erweiterung der Struktur-Ersetzung um Ziel-Bereiche
Der Aenderungsbefehl (Aenderungsbefehl.StrukturErsetzung) wird um das Feld
„bisStelle“ ergänzt, welches bei einem zusammenhängenden, koordinierten Ziel-
Bereich („Die Absätze 8 und 9 werden durch die folgenden Absätze 8 bis 10
ersetzt: „…““, „Die bisherigen Sätze 4 und 5 werden wie folgt gefasst: „…““)
das letzte Ziel bezeichnet; bei einem Einzelziel bleibt es unbesetzt. Der
Befehlsanwender (BefehlAnwender) löst den Bereich für Absätze, Sätze und
Paragraphen auf und ersetzt ihn durch den zitierten Block.
Artikel 2
Aufnahme struktureller Streichungen und Umnummerierungen
Der Befehlserkenner wird wie folgt geändert:
1. Die Streichung ganzer Struktureinheiten („§ 9 wird gestrichen.“, „Die §§ 34
bis 39 werden gestrichen.“, „Der bisherige Teil 3 wird gestrichen.“) wird als
Aufhebung erkannt.
2. Die Umnummerierung wird auf Paragraphen und Gliederungseinheiten (Teil,
Abschnitt, Unterabschnitt, Buch, Kapitel, Anlage) erstreckt sowie um die
paarweise §-Umnummerierung („Die §§ 46 und 47 werden zu den §§ 34 und 35.“)
ergänzt. Der Befehlsanwender benennt hierbei die betroffene Norm oder
Gliederungseinheit um; eine bereits weggefallene Zielnorm wird überschrieben.
3. Die Neufassung eines §-Bereichs wird auf die Form ohne „bisherige“ erstreckt
und liefert bei mehrgliedrigem Ziel nunmehr eine bereichsbezogene Struktur-
Ersetzung statt eines Einzelbefehls.
4. Die Neufassung der Überschrift einer benannten Einheit („In Anlage 7 wird die
Überschrift durch die folgende Überschrift ersetzt: „…““) sowie der Inhalts-
übersicht werden erkannt; letztere wird stets der manuellen Prüfung
zugewiesen.
5. Die Entwurfsform der Struktur-Ersetzung, bei der die Aufzählungsbezeichnung
außerhalb des Zitats steht („… ersetzt: 3. „…““), wird abgefangen und dem
Ersatztext wieder vorangestellt.
6. Der Chapeau-Qualifier („Im Satzteil vor Nummer 1 …“, „In der Angabe vor
Nummer 1 …“) wird auf weitere Einleitungen erstreckt; steht er allein, ohne
eigene Stelle, so bezieht sich die Operation auf die Kontextstelle.
Artikel 3
Einfügung und Ersetzung ganzer Paragraphenblöcke
1. Die Einfügung mehrerer Paragraphen in einem Zuge („Nach § 60a werden die
folgenden §§ 60b und 60c eingefügt: „…““) sowie die Ersetzung eines §-Bereichs
durch einen §-Block werden erkannt.
2. Der Befehlsanwender zerlegt den zitierten Block anhand der §-Überschriften
(unter Ausschluss bloßer Querverweise wie „§ 71 Absatz 1“) in die einzelnen
Paragraphen und fügt sie geschlossen ein oder setzt sie an die Stelle des
ersetzten Bereichs.
Schlussbestimmung
Die vorstehenden Änderungen sind durch die Prüfung sämtlicher Testfälle
(einhundertvierundvierzig an der Zahl) sowie durch die vollständige Erstellung
(mvnw verify) bestätigt worden. Nicht selbsttätig verarbeitbar bleiben
einstweilen die mehrquellige Struktur-Ersetzung über mehrere Gesetze hinweg
sowie vereinzelte Sonderfälle der Entwurfsfassung (Drucksachen); diese werden
dem Abschnitt „Manuell prüfen“ zugewiesen. Die Unterstützung des bayerischen
Landesrechts bleibt einem späteren Zeitpunkt vorbehalten.
════════════════════════════════════════════════════════════════════════════════
Fassung vom 13. Juli 2026,
zuletzt geändert durch die am 13. Juli 2026 vorgenommenen Änderungen
════════════════════════════════════════════════════════════════════════════════
Auf Grund der fortdauernden Ertüchtigung des Befehlserkenners werden die bis zu
diesem Tage nicht selbsttätig verarbeitbaren Änderungsanweisungen nach näherer
Maßgabe der nachstehenden Abschnitte einer Verarbeitung zugänglich gemacht. Die
Zahl der nicht erkannten Anweisungen (nachfolgend: „unbekannte Befehle“) ver-
ringert sich hierdurch nach den vorliegenden Feststellungen wie folgt: im
Datensatz GEG von fünfzig (50) auf fünf (5), im Datensatz IfSG von elf (11) auf
drei (3), im Datensatz AGG von zwei (2) auf null (0) sowie im Datensatz UWG von
zwei (2) auf null (0).
Artikel 1
Übernahme des vorbefindlichen Bearbeitungsstandes
Der zum Stichtag im Arbeitsverzeichnis vorgehaltene, noch nicht in die Versions-
verwaltung überführte Bearbeitungsstand wird eingecheckt. Erfasst werden ins-
besondere der Sammelbefehl (mehrere Teilbefehle als ein Protokolleintrag), die
mehrfache Stellenauflösung (StellenParser.parseMehrfach) sowie die Auflösung von
Bereichs-Umnummerierungen in absteigender Reihenfolge.
Artikel 2
Erkennung verbundener und mehrgliedriger Ersetzungsanweisungen
Der Befehlserkenner (BefehlErkenner) wird wie folgt geändert:
1. Die Erkennung wird in eine Einzelbefehls-Stufe (erkenneEinzeln) und eine nach-
geordnete Auffangstufe (erkennePaarErsetzung, erkenneVerbund) gegliedert. Trifft
ein Muster zwar auf den Wortlaut, nicht aber auf eine auflösbare Stelle zu, so
steht dies der Prüfung der nachfolgenden Muster und Auffangstufen nicht mehr
entgegen.
2. Anweisungen der Form „In <Stelle> werden die Wörter „A“ durch die Wörter „B“
und die Angabe „C“ durch die Wörter „D“ ersetzt“ werden erkannt; für jedes
Ersetzungspaar wird eine Ersetzung gebildet und, im Falle koordinierter Stellen,
das Kreuzprodukt aus Stellen und Paaren gebildet.
3. Anweisungen der Form „... und wird/werden ...“ werden an der Verbindungsstelle
versuchsweise zerlegt; wird jede Teilklausel als eigenständiger Befehl erkannt –
unverändert, mit großem Anfangsbuchstaben oder unter Voranstellung des lokativen
Präfixes der linken Klausel –, so entsteht ein Sammelbefehl.
4. Ergänzend werden die Einfügung eines Satzzeichens („... ein Komma eingefügt“)
sowie die anker-voranstehende Einfügung („Nach der Angabe „...“ wird ...
eingefügt“) als Muster aufgenommen.
Der Stellenparser (StellenParser) wird dahin geändert, dass eine bloße Nummer oder
ein bloßer Buchstabe die Komponentenart der jeweils vorangehenden Stelle erbt
(„Absatz 1 und 5“).
Artikel 3
Erkennung von Bereichs-, Wortlaut- und Satzzeichenanweisungen
1. Der Stellenparser wird um die Entfaltung von „bis“-Bereichen (ganzzahlig sowie
für Einzelbuchstaben) und um die Pluralformen der Komponentenbezeichnungen
(Absätze, Sätze, Nummern, Buchstaben) ergänzt.
2. Die Aufhebung wird auf bereichs- und koordinierte Angaben erstreckt („Die
Nummern 1 bis 3 werden aufgehoben“, „Die Absätze 4 und 5 werden aufgehoben“).
3. Die Bereichs-Umnummerierung wird auf Nummern und Buchstaben sowie auf die Form
ohne „zu den“ erstreckt („Die bisherigen Nummern 4 bis 6 werden die Nummern
8 bis 10“); die Einzel-Umnummerierung wird auf Nummern und Buchstaben sowie auf
die Einleitung „Die bisherige“ erstreckt.
4. Die Neufassung eines Paragraphen-Bereichs („Die §§ 52 bis 56 werden wie folgt
gefasst: ...“) wird durch Zerlegung des zitierten Blocks an den „§ N“-Grenzen
erkannt.
5. Es wird der Befehl „WortlautZuAbsatz“ eingeführt; die Anweisung „Der Wortlaut
wird Absatz N“ versieht den bislang unnummerierten Normtext mit der Absatznummer.
6. Die Ersetzung eines Wortes durch ein Satzzeichen („... das Wort „oder“ am Ende
durch ein Komma ersetzt“) sowie die zusammengesetzten Kommaformen werden erkannt.
Artikel 4
Aufnahme der Gliederungs- und Inhaltsübersichts-Anweisungen
1. Das Datenmodell wird wie folgt geändert:
a) Die Gliederung (Gliederung) wird um die Gliederungskennzahl ergänzt.
b) Das Gesetz (Gesetz) führt fortan die geordnete Liste der Gliederungs-
einheiten mit; der Lader (GiiXmlLoader) erhebt diese aus dem gii-XML.
2. Die Stelle (Stelle) wird um die Komponenten „Gliederungseinheit“ (Teil,
Abschnitt, Unterabschnitt, Anlage und dergleichen) sowie „Absatzbezeichnung“
ergänzt. Der Stellenparser erkennt diese Komponenten, ferner die Wendung
„Überschrift von <Gliederung>“, und lässt die verfeinernden Zusätze „Satzteil
vor Nummer N“ und „Angabe vor Nummer N“ außer Betracht.
3. Die Neufassung sowie die Streichung von Gliederungs-Überschriften werden auf den
Gliederungsbaum angewandt und in der Synopse als gesonderter Abschnitt
„Geänderte Gliederungs-Überschriften“ dargestellt. Die Streichung einer
Absatzbezeichnung entfernt die betreffende Absatznummer. Die die Inhaltsübersicht
betreffenden Anweisungen („Die Angabe(n) zu ...“) werden erkannt.
Schlussbestimmung
Die vorstehenden Änderungen sind durch die Prüfung sämtlicher Testfälle
(einhundertneunzehn an der Zahl) sowie durch die vollständige Erstellung (mvnw
verify) bestätigt worden. Nicht selbsttätig verarbeitbar bleiben einstweilen die
mehrquelligen Struktur-Ersetzungen, die Einfügung und Bereichsersetzung ganzer
Paragraphenfolgen (§§), die Neufassung von Satzbereichen sowie die stellenlosen
Chapeau-Anweisungen; diese werden dem Abschnitt „Manuell prüfen“ zugewiesen. Die
Unterstützung des bayerischen Landesrechts bleibt einem späteren Zeitpunkt
vorbehalten.
Artikel 9
Berichtigung der Urheberrechtsvermerke
Sämtliche eigenen Dateien wiesen als Jahr der Urheberschaft „2020“ aus, das Jahr
der Anlegung des Verzeichnisses. Von neunundachtzig eigenen Dateien sind
vierundachtzig erst im Jahre 2026 entstanden; der Vermerk war insoweit unrichtig.
(1) Für jede Datei wird das Jahr aus ihrer Entstehungs- und ihrer letzten
Änderungsbuchung erhoben. Neunundsiebzig Dateien tragen fortan „2026“.
(2) Fünf Dateien reichen tatsächlich in das Jahr 2020 zurück und in das Jahr 2026
hinein; sie tragen fortan „2020-2026“ (.gitignore, README.md, pom.xml,
AendGgner.java, logging.properties). Allein „.mvn/maven.config“ ist seit 2020
unberührt geblieben und behält seinen Vermerk.
(3) Die Zuordnungsdatei (REUSE.toml) wird entsprechend geschieden: Der bisher
gemeinsame Block für „maven.config“ und die drei kommentarlosen eigenen
Dateien wird geteilt, weil deren Jahre auseinanderfallen. Die selbst
abgeleiteten Textfassungen und die Herkunftsnachweise (SOURCES) tragen
„2026“.
(4) Der Kopfzeilenvordruck des Formatierers (Spotless) setzt an die Stelle des
festen Jahres den Platzhalter „$YEAR“. Andernfalls erzwänge der Bau auf jeder
Java-Datei wieder ein und dasselbe Jahr.
(5) Die Prüfung geht auf: „reuse lint“ weist 188 von 188 Dateien als vollständig
ausgezeichnet aus, „spotless:check“ beanstandet nichts, und „spotless:apply“
ändert an den berichtigten Vermerken nichts mehr.