aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/eu/mulk/aendggner/gesetz/land/LandesRechtTextParser.java38
-rw-r--r--src/test/java/eu/mulk/aendggner/EndToEndTest.java27
-rw-r--r--src/test/java/eu/mulk/aendggner/gesetz/land/LandesRechtTextParserTest.java41
-rw-r--r--src/test/resources/sampledata/Berlin/LAF-ErrG-alt.txt46
-rw-r--r--src/test/resources/sampledata/Berlin/LAF-ErrG-neu.txt47
-rw-r--r--src/test/resources/sampledata/Berlin/SOURCES50
-rw-r--r--src/test/resources/sampledata/Landesrecht-Beispiele.adoc83
7 files changed, 304 insertions, 28 deletions
diff --git a/src/main/java/eu/mulk/aendggner/gesetz/land/LandesRechtTextParser.java b/src/main/java/eu/mulk/aendggner/gesetz/land/LandesRechtTextParser.java
index 7976cd9..d6a1d2e 100644
--- a/src/main/java/eu/mulk/aendggner/gesetz/land/LandesRechtTextParser.java
+++ b/src/main/java/eu/mulk/aendggner/gesetz/land/LandesRechtTextParser.java
@@ -92,6 +92,15 @@ final class LandesRechtTextParser {
*/
private static final String INHALTSUEBERSICHT = "Inhaltsübersicht";
+ /**
+ * Normkopf einer Anlage oder eines Anhangs, nummeriert („Anlage 2“) wie unnummeriert-benannt
+ * („Anlage“). Die enbez lautet genau so, wie das gii-XML sie führt, damit {@link
+ * eu.mulk.aendggner.aenderung.Stelle#anlagenEnbez()} sie unverändert trifft. Ein etwaiger Titel
+ * folgt auf eigenen Zeilen und geht in den Normtitel ein.
+ */
+ private static final Pattern ANLAGEN_KOPF =
+ Pattern.compile("^(Anlage|Anhang)(?:\\s+(\\d+[a-z]?))?\\s*$");
+
// Normkopf: „§ N“ bzw. „Art. N“ plus Titel auf derselben Zeile. Das Sigel steht in Gruppe 1, die
// Nummer in Gruppe 2, der Titel in Gruppe 3. Die Negativliste schließt Querverweise am
// Zeilenanfang aus („Art. 4 Abs. 3 …“, „§ 5 Absatz 2 …“).
@@ -164,6 +173,11 @@ final class LandesRechtTextParser {
String elternKennzahl = null;
int gliederungsZaehler = 0;
+ // Ab dem ersten Anlagen-Normkopf ist alles Folgende Inhalt der Anlagen: Ihre inneren
+ // Überschriften („Erster Abschnitt“, „Nummer 6“) gliedern nicht das Gesetz, und ein Paragraph,
+ // der in ihnen zitiert wird, eröffnet keine Norm. Nur eine weitere Anlage tut das.
+ boolean imAnlagenteil = false;
+
String normEnbez = null;
String normTitel = null;
var normZeilen = new ArrayList<String>();
@@ -178,6 +192,7 @@ final class LandesRechtTextParser {
var roemisch = zeile != null ? GLIEDERUNG_ROEMISCH.matcher(zeile) : null;
var unterGliederung = zeile != null ? UNTER_GLIEDERUNG.matcher(zeile) : null;
var normKopf = zeile != null ? NORM_KOPF.matcher(zeile) : null;
+ var anlagenKopf = zeile != null ? ANLAGEN_KOPF.matcher(zeile) : null;
var uebersicht = INHALTSUEBERSICHT.equals(zeile);
// Die Inhaltsübersicht führt die Gliederungs-Überschriften des Gesetzes als eigene Zeilen mit
// („Abschnitt 1 Allgemeine Vorschriften“). Innerhalb ihrer beendet eine solche Zeile die Norm
@@ -185,6 +200,7 @@ final class LandesRechtTextParser {
// verloren.
var gliederungsZeile =
zeile != null
+ && !imAnlagenteil
&& (gliederung.matches()
|| arabisch.matches()
|| ordinalwort.matches()
@@ -192,10 +208,14 @@ final class LandesRechtTextParser {
|| (unterGliederung.matches() && istUnterGliederung(unterGliederung, zeilen, i)))
&& (!INHALTSUEBERSICHT.equals(normEnbez) || folgtNormkopf(zeilen, i));
- if (zeile == null
- || uebersicht
- || gliederungsZeile
- || (normKopf.matches() && istNeuerNormKopf(normKopf.group(2), letzteNormNummer))) {
+ boolean neueNorm =
+ zeile != null
+ && !imAnlagenteil
+ && normKopf.matches()
+ && istNeuerNormKopf(normKopf.group(2), letzteNormNummer);
+ boolean neueAnlage = zeile != null && anlagenKopf.matches();
+
+ if (zeile == null || uebersicht || gliederungsZeile || neueNorm || neueAnlage) {
// Laufende Norm abschließen.
if (normEnbez != null) {
normen.add(baueNorm(normEnbez, normTitel, aktuelleGliederung, normZeilen));
@@ -239,7 +259,15 @@ final class LandesRechtTextParser {
ordinalwort.group(1) + " " + ordinalwort.group(2),
titel.isEmpty() ? null : titel);
gliederungen.add(aktuelleGliederung);
- } else if (normKopf.matches() && istNeuerNormKopf(normKopf.group(2), letzteNormNummer)) {
+ } else if (neueAnlage) {
+ imAnlagenteil = true;
+ normEnbez =
+ anlagenKopf.group(2) == null
+ ? anlagenKopf.group(1)
+ : anlagenKopf.group(1) + " " + anlagenKopf.group(2);
+ normTitel = null;
+ aktuelleGliederung = null;
+ } else if (neueNorm) {
normEnbez = normKopf.group(1) + " " + normKopf.group(2);
normTitel = normKopf.group(3) != null ? normKopf.group(3).strip() : null;
letzteNormNummer = numerisch(normKopf.group(2));
diff --git a/src/test/java/eu/mulk/aendggner/EndToEndTest.java b/src/test/java/eu/mulk/aendggner/EndToEndTest.java
index df80a04..8fa50f5 100644
--- a/src/test/java/eu/mulk/aendggner/EndToEndTest.java
+++ b/src/test/java/eu/mulk/aendggner/EndToEndTest.java
@@ -782,12 +782,12 @@ class EndToEndTest {
* Spaltenspikes fest — die Spaltenreihenfolge des Inhaltsstroms ist bereits die Lesereihenfolge,
* eine koordinatenbasierte Spaltenerkennung ist dafür nicht nötig.
*
- * <p>Kein voller Akzeptanztest: gesetze.berlin.de ist wie das schleswig-holsteinische Portal eine
- * anmeldepflichtige juris-Anwendung, die Stammfassungen sind daraus nicht zu beschaffen. Artikel
- * 1 ändert zudem eine *Anlage*; anlagenbezogene Befehle wendet ÄndGgner an (siehe GEG), doch der
- * {@link eu.mulk.aendggner.gesetz.land.LandesRechtTextParser} kennt nur „§“- und „Art.“-Normköpfe
- * — eine handgepflegte Stammfassung könnte diese Anlage nicht tragen (dieselbe Grenze, an der
- * Baden-Württemberg zurückgestellt wurde).
+ * <p>Artikel 2 (LAF-Errichtungsgesetz) ist ein voller Akzeptanzfall: beide Befehle angewandt,
+ * alle fünf Normen gleich der amtlichen Nachfassung. Für Artikel 1 (ASOG) reicht die Prüfung bis
+ * zur Befehlserkennung. Fünf seiner sechs Befehle zielen auf die <em>Anlage</em>, deren Einheiten
+ * dort nicht als Aufzählungsmarken, sondern als Überschriften gesetzt sind („Nummer 6“, „Nummer
+ * 23“); sie brauchen einen eigenen Rang zwischen Norm und Absatz, den das Datenmodell noch nicht
+ * führt. Die Begründung im einzelnen steht in {@code Berlin/SOURCES}.
*/
@Test
void asogLafAendGBerlin() throws Exception {
@@ -807,13 +807,11 @@ class EndToEndTest {
// Artikel 2 trägt sein Ziel in der Änderungsformel („§ 2 Satz 1 des Gesetzes zur Errichtung
// …“); beide Punkte erben es als Kontext.
- var laf =
- new Gesetz(
- "LAF-ErrichtungsG",
- "Gesetz zur Errichtung eines Landesamtes für Flüchtlingsangelegenheiten und"
- + " Unterbringung",
- null,
- List.of());
+ var altLaf = SAMPLEDATA.resolve("Berlin/LAF-ErrG-alt.txt");
+ assumeTrue(Files.exists(altLaf), "Berliner Stammfassung fehlt");
+ var laf = new eu.mulk.aendggner.gesetz.land.LandesRechtLoader().load(altLaf);
+ // Dieses Gesetz führt kein Inhaltsverzeichnis; der Wortlaut beginnt beim ersten Normkopf.
+ assertThat(laf.normen()).hasSize(5);
var ergebnis = new AenderungsgesetzParser().parse(text, laf, null);
assertThat(ergebnis.artikel()).containsExactly("2");
assertThat(ergebnis.befehle()).hasSize(2);
@@ -858,6 +856,9 @@ class EndToEndTest {
// am nächsten Aufzählungspunkt verschlänge das offene Zitat die Punkte cc) und c).
assertThat(ZitatExtraktor.extrahiere(text).warnungen())
.anyMatch(w -> w.startsWith("Zitat vor dem Aufzählungspunkt „cc)“ nicht geschlossen"));
+
+ // Artikel 2 wird vollständig angewandt und gleicht danach der amtlichen Nachfassung.
+ pruefeGegenNachfassung(laf, ergebnis, "Berlin/LAF-ErrG-neu.txt");
}
/**
diff --git a/src/test/java/eu/mulk/aendggner/gesetz/land/LandesRechtTextParserTest.java b/src/test/java/eu/mulk/aendggner/gesetz/land/LandesRechtTextParserTest.java
index e0cb1fc..bed8f9e 100644
--- a/src/test/java/eu/mulk/aendggner/gesetz/land/LandesRechtTextParserTest.java
+++ b/src/test/java/eu/mulk/aendggner/gesetz/land/LandesRechtTextParserTest.java
@@ -258,4 +258,45 @@ class LandesRechtTextParserTest {
org.assertj.core.groups.Tuple.tuple("1.", "Der Rundfunkrat"));
assertThat(gesetz.norm("§ 15").orElseThrow().gliederung().titel()).isEqualTo("Der Rundfunkrat");
}
+
+ /**
+ * Eine Anlage ist eine eigene Norm; ihre enbez lautet genau wie im gii-XML („Anlage“, „Anlage 2“,
+ * „Anhang“), damit {@code Stelle.anlagenEnbez()} sie unverändert trifft. Alles hinter ihrem Kopf
+ * gehört zu ihr: Ihre inneren Überschriften gliedern nicht das Gesetz, und ein Paragraph, den sie
+ * zitiert, eröffnet keine Norm. Nur eine weitere Anlage beendet sie.
+ */
+ @Test
+ void erkenntAnlagenAlsEigeneNormen() {
+ var gesetz =
+ LandesRechtTextParser.parse(
+ """
+ Beispielgesetz
+ (BeispG)
+ Vom 1. Januar 2020
+ Erster Abschnitt Allgemeines
+ § 1 Zweck
+ (1) Dieses Gesetz dient der Erprobung.
+ Anlage
+ Zuständigkeitskatalog
+ (zu § 1 Absatz 1)
+ Erster Abschnitt Aufgaben der Behörden
+ (1) Die erste Aufgabe.
+ (2) Die zweite Aufgabe; § 1 bleibt unberührt.
+ Anlage 2
+ Muster
+ (1) Das Muster.
+ """);
+
+ assertThat(gesetz.normen())
+ .extracting(eu.mulk.aendggner.gesetz.Norm::enbez)
+ .containsExactly("§ 1", "Anlage", "Anlage 2");
+ // Die Überschrift innerhalb der Anlage ist Inhalt, keine Gliederung des Gesetzes.
+ assertThat(gesetz.gliederungen())
+ .extracting(Gliederung::bezeichnung)
+ .containsExactly("Erster Abschnitt");
+ assertThat(gesetz.norm("Anlage").orElseThrow().gesamtText())
+ .contains("Erster Abschnitt Aufgaben der Behörden")
+ .contains("§ 1 bleibt unberührt");
+ assertThat(gesetz.norm("Anlage 2").orElseThrow().gesamtText()).contains("Das Muster");
+ }
}
diff --git a/src/test/resources/sampledata/Berlin/LAF-ErrG-alt.txt b/src/test/resources/sampledata/Berlin/LAF-ErrG-alt.txt
new file mode 100644
index 0000000..02e8d6b
--- /dev/null
+++ b/src/test/resources/sampledata/Berlin/LAF-ErrG-alt.txt
@@ -0,0 +1,46 @@
+Gesetz zur Errichtung eines Landesamtes für Flüchtlingsangelegenheiten und Unterbringung
+(FlüLAErrG BE)
+Vom 14. März 2016
+§ 1 Errichtung; Bezeichnung
+Das Land Berlin errichtet mit Inkrafttreten dieses Gesetzes (Errichtungszeitpunkt) das Landesamt für Flüchtlingsangelegenheiten als nachgeordnete Behörde der für Soziales zuständigen Senatsverwaltung. Ab dem 16. April 2026 trägt es die Bezeichnung Landesamt für Flüchtlingsangelegenheiten und Unterbringung (LFU).
+§ 2 Aufgaben
+Das Landesamt für Flüchtlingsangelegenheiten und Unterbringung ist zuständig für
+1. Errichtung, Betrieb und Schließung von Erstaufnahmeeinrichtungen und Gemeinschaftsunterkünften sowie Beschaffung von Heim- und Wohnplätzen für wohnungslose Personen einschließlich Asylbewerberinnen und Asylbewerber sowie Ausländerinnen und Ausländer, die nach den §§ 15a, 22, 23 oder 24 des Aufenthaltsgesetzes aufgenommen worden sind, durch Verträge mit Dritten; Belegung von Erstaufnahmeeinrichtungen und Gemeinschaftsunterkünften sowie Beschaffung von Heim- und Wohnplätzen für Asylbewerberinnen und Asylbewerber sowie Ausländerinnen und Ausländer, die nach den §§ 15a, 22, 23 oder 24 des Aufenthaltsgesetzes aufgenommen worden sind, durch Verträge mit Dritten; Leistungen an den Personenkreis nach den §§ 22, 23 oder 24 des Aufenthaltsgesetzes im Rahmen der Erstversorgung; Leistungen an Asylbewerberinnen und Asylbewerber; Leistungen an ehemalige Asylbewerberinnen und Asylbewerber nach rechtskräftiger Ablehnung des Asylantrags während einer Übergangszeit; Leistungen an Ausländerinnen und Ausländer, die nach § 15a des Aufenthaltsgesetzes zu verteilen sind, bis zur Umsetzung der Verteilentscheidung; Leistungen nach dem Asylbewerberleistungsgesetz an Personen, die sich in Abschiebungshaft befinden; Leistungen nach dem Asylbewerberleistungsgesetz an Opfer der in § 25 Absatz 4a und 4b des Aufenthaltsgesetzes genannten Straftaten während der Ausreisefrist nach § 59 Absatz 7 des Aufenthaltsgesetzes bis zur Erteilung einer Aufenthaltserlaubnis, sowie gegebenenfalls an die mit ihnen in häuslicher Gemeinschaft lebenden minderjährigen Kinder;
+2. Ordnungsaufgaben gemäß Nummer 31 der Anlage zu § 2 Absatz 4 Satz 1 des Allgemeinen Sicherheits- und Ordnungsgesetzes in der Fassung der Bekanntmachung vom 11. Oktober 2006 (GVBl. S. 930), das zuletzt durch Artikel 1 des Gesetzes vom 1. April 2026 (GVBl. S. 154) geändert worden ist, in der jeweils geltenden Fassung.
+Mit der Errichtung, dem Betrieb sowie der Schließung von Unterkünften kann das Landesamt für Flüchtlingsangelegenheiten und Unterbringung Unternehmen und Eigenbetriebe des Landes Berlin oder Dritte beauftragen.
+§ 3 Leitung des Landesamtes für Flüchtlingsangelegenheiten und Unterbringung
+Die Leitung des Landesamtes für Flüchtlingsangelegenheiten und Unterbringung obliegt der Präsidentin oder dem Präsidenten. Die Präsidentin oder der Präsident wird auf Vorschlag der für Soziales zuständigen Senatsverwaltung vom Senat ernannt.
+§ 4 Personal
+Das Landesamt für Flüchtlingsangelegenheiten und Unterbringung ist Dienststelle im Sinne von § 5 Absatz 1 des Personalvertretungsgesetzes in der Fassung der Bekanntmachung vom 14. Juli 1994 (GVBl. S. 337; 1995, S. 24), das zuletzt durch Artikel 4 des Gesetzes vom 2. Dezember 2024 (GVBl. S. 603) geändert worden ist, in der jeweils geltenden Fassung, und Personalwirtschaftsstelle.
+§ 5 Datenverarbeitung
+(1) Zum Zwecke der Verwaltung, des Betriebs und der Abrechnung von Aufnahmeeinrichtungen für Asylbewerberinnen und Asylbewerber sowie unerlaubt eingereiste Ausländerinnen und Ausländer im Sinne von § 15a des Aufenthaltsgesetzes und Gemeinschaftsunterkünften für wohnungslose Personen einschließlich Leistungsberechtigten nach dem Asylbewerberleistungsgesetz sowie für die Zuweisung von Unterkunftsplätzen ist das Erheben, Erfassen, Speichern und Verwenden folgender personenbezogener Daten der dort untergebrachten Personen durch das Landesamt für Flüchtlingsangelegenheiten und Unterbringung und die für die Ordnungsaufgaben bei Obdachlosigkeit zuständigen Behörden (zuweisende Stellen) zulässig:
+1. Familienname, Geburtsname, Vornamen, Aliasnamen,
+2. Geburtsdatum, Geburtsort,
+3. Staatsangehörigkeit,
+4. Geschlecht,
+5. Namen, Anschrift, Telefonnummern und E-Mail-Adressen der oder des Bevollmächtigten,
+6. Namen, Anschrift, Telefonnummern und E-Mail-Adressen der rechtlichen Betreuerin oder des rechtlichen Betreuers,
+7. die durch das angewandte IT-Fachverfahren generierte Personen-Identifikationsnummer (PID),
+8. Belegungsdaten (Angaben zur Unterkunft, Platzmerkmale, Einzugs- und Auszugsdatum, tägliche Anwesenheit, Angaben zur gemeinsamen Unterbringung mit anderen Personen),
+9. Feststellung des Vorliegens oder einer unmittelbaren Gefahr von Obdachlosigkeit oder Wohnungslosigkeit,
+10. Angaben zum aufenthaltsrechtlichen Status,
+11. AZR-Nummer gemäß § 3 Absatz 1 Nummer 2 des AZR-Gesetzes vom 2. September 1994 (BGBl. I S. 2265), das zuletzt durch Artikel 12 des Gesetzes vom 8. Mai 2024 (BGBl. 2024 I Nr. 152) geändert worden ist, in der jeweils geltenden Fassung,
+12. freiwillig gemachte Angaben zu Telefonnummern und E-Mail-Adressen,
+13. freiwillig gemachte Angaben zur Bankverbindung und
+14. freiwillig gemachte Angaben zum Aktenzeichen bei einer Behörde, die Sozialleistungen erbringt.
+Personenbezogene Daten nach Satz 1 Nummer 1 bis 6 sowie 8 und 11 sind nach Maßgabe des § 87 des Aufenthaltsgesetzes den in § 86 Satz 1 des Aufenthaltsgesetzes genannten Stellen auf Ersuchen zu übermitteln.
+(2) Sofern im Rahmen von Absatz 1 zum Zwecke der Aufgabenerfüllung besondere Kategorien personenbezogener Daten im Sinne des Artikels 9 Absatz 1 der Verordnung (EU) 2016/679 des Europäischen Parlaments und des Rates vom 27. April 2016 zum Schutz natürlicher Personen bei der Verarbeitung personenbezogener Daten, zum freien Datenverkehr und zur Aufhebung der Richtlinie 95/46/EG (Datenschutz-Grundverordnung) (ABl. L 119 vom 4.5.2016, S. 1; L 314 vom 22.11.2016, S. 72; L 127 vom 23.5.2018, S. 2; L 74 vom 4.3.2021, S. 35) in der jeweils geltenden Fassung durch die zuweisenden Stellen verarbeitet werden, ist dies nur zulässig, wenn die betroffene Person in die Verarbeitung zum Zwecke der bedarfsgerechten Unterbringung zuvor ausdrücklich eingewilligt hat. Die Verweigerung oder der Widerruf der Einwilligung hat keine Auswirkung auf den Anspruch auf Unterbringung. Wird die Einwilligung bei der betroffenen Person eingeholt, ist diese Person auf den Zweck der vorgesehenen Verarbeitung, auf die Folgen der Verweigerung der Einwilligung sowie auf die jederzeitige Widerrufsmöglichkeit gemäß Artikel 7 Absatz 3 der Verordnung (EU) 2016/679 und deren Folgen hinzuweisen. § 14 Absatz 3 des Berliner Datenschutzgesetzes vom 13. Juni 2018 (GVBl. S. 418), das zuletzt durch Artikel 9 des Gesetzes vom 10. Juli 2025 (GVBl. S. 270) geändert worden ist, in der jeweils geltenden Fassung bleibt unberührt.
+(3) Zum Zwecke der Aufgabenerfüllung nach Absatz 1 dürfen das Landesamt für Flüchtlingsangelegenheiten und Unterbringung und die zuweisenden Stellen den mit der Unterbringung und Betreuung beauftragten Dritten personenbezogene Daten der untergebrachten Personen nach Absatz 1 Satz 1 Nummer 1 bis 10 und nach Absatz 2 übermitteln, soweit dies zu deren Aufgabenerfüllung erforderlich ist. Die Dritten dürfen die ihnen übermittelten Daten nur für den Zweck verarbeiten, zu dessen Erfüllung sie ihnen übermittelt werden. Sie haben die Daten in demselben Umfang geheim zu halten wie die übermittelnden Stellen. Die bei Dritten beschäftigten Personen, welche diese Daten verarbeiten, sind spätestens bei der Übermittlung der Daten auf die Einhaltung der Pflichten nach den Sätzen 2 und 3 hinzuweisen. § 14 Absatz 3 des Berliner Datenschutzgesetzes bleibt unberührt. Auch auf die Einhaltung der sich daraus ergebenden Pflichten sind die bei den Dritten beschäftigten Personen spätestens bei der Übermittlung der Daten hinzuweisen. Die Dritten dürfen Belegungsdaten im Sinne von Absatz 1 Satz 1 Nummer 8 an das Landesamt für Flüchtlingsangelegenheiten und Unterbringung und die zuweisenden Stellen übermitteln.
+(4) Die nach den Absätzen 1 bis 3 gespeicherten personenbezogenen Daten sind spätestens sechs Jahre nach Beendigung der letztmaligen Unterbringung (Auszugsdatum) zu löschen. Die Frist beginnt mit Ablauf des Jahres, in dem die letztmalige Unterbringung beendet worden ist.
+(5) Zum Zwecke der Verwaltung, des Betriebs und der Abrechnung von Aufnahmeeinrichtungen und Gemeinschaftsunterkünften im Sinne des Absatzes 1 ist die Erhebung, Erfassung, Verwendung und Speicherung folgender personenbezogener Daten der dort im Zusammenhang mit der Unterbringung und Betreuung beauftragten Dritten sowie der von diesen zur unmittelbaren Aufgabenerfüllung beschäftigten und beauftragten Personen durch das Landesamt für Flüchtlingsangelegenheiten und Unterbringung zulässig:
+1. Familienname, Geburtsname, Vornamen,
+2. Geburtsdatum, Geburtsort,
+3. Geschlecht,
+4. Bezeichnung der Arbeitgebenden und der Beschäftigungsorte,
+5. in Dienstplänen enthaltene Daten über Dienstzeiten und Abwesenheiten,
+6. Bewacherregisteridentifikationsnummer gemäß § 3 Absatz 1 Nummer 1 Buchstabe b der Bewachungsverordnung vom 3. Mai 2019 (BGBl. I S. 692), die durch Artikel 2 der Verordnung vom 24. Juni 2019 (BGBl. I S. 882) geändert worden ist, in der jeweils geltenden Fassung,
+7. Umstand der Einsichtnahme in vertraglich geforderte Qualifikationsnachweise sowie Art und Datum derselben und
+8. Umstand der Einsichtnahme in ein Führungszeugnis nach § 30 Absatz 5 und § 30a Absatz 1 des Bundeszentralregistergesetzes in der Fassung der Bekanntmachung vom 21. September 1984 (BGBl. I S. 1229, 1985 I S. 195), das zuletzt durch Artikel 5 des Gesetzes vom 19. Juli 2024 (BGBl. 2024 I Nr. 245) geändert worden ist, in der jeweils geltenden Fassung, Datum des Führungszeugnisses und die Information, ob die das Führungszeugnis betreffende Person wegen einer Straftat nach den §§ 171, 174 bis 174c, 176 bis 180a, 181a, 182 bis 184g, 184i bis 184l, 225, 232 bis 233a, 234, 235 oder 236 des Strafgesetzbuches rechtskräftig verurteilt worden ist, soweit die Dritten bzw. die von diesen zur unmittelbaren Aufgabenerfüllung beschäftigten und beauftragten Personen mit der Beaufsichtigung, Betreuung, Erziehung oder Ausbildung Minderjähriger oder mit Tätigkeiten betraut sind, die in vergleichbarer Weise geeignet sind, Kontakt zu Minderjährigen aufzunehmen.
+Die nach Satz 1 Nummer 1 bis 7 gespeicherten Daten sind spätestens drei Jahre nach Beendigung des jeweiligen Vertragsverhältnisses mit dem Dritten zu löschen. Die Frist beginnt mit Ablauf des Jahres, in dem das Vertragsverhältnis beendet worden ist. Die nach Satz 1 Nummer 8 gespeicherten Daten sind unverzüglich zu löschen, wenn im Anschluss an die Einsichtnahme keine Tätigkeit nach Satz 1 Nummer 8 wahrgenommen wird. Sie sind spätestens sechs Monate nach der letztmaligen Ausübung einer in Satz 1 Nummer 8 genannten Tätigkeit zu löschen.
+(6) Die Zulässigkeit der Verarbeitung von personenbezogenen Daten durch das Landesamt für Flüchtlingsangelegenheiten und Unterbringung auf der Grundlage anderer Rechtsvorschriften bleibt unberührt.
+(7) Die für Soziales zuständige Senatsverwaltung kann die datenschutzrechtliche Verantwortlichkeit für die nach den Absätzen 1 bis 3 ausgeführten Verarbeitungen personenbezogener Daten gemäß Artikel 4 Nummer 7 und Artikel 24 und 26 der Verordnung (EU) 2016/679 allein oder gemeinsam mit dem Landesamt für Flüchtlingsangelegenheiten und Unterbringung sowie den zuweisenden Stellen tragen.
diff --git a/src/test/resources/sampledata/Berlin/LAF-ErrG-neu.txt b/src/test/resources/sampledata/Berlin/LAF-ErrG-neu.txt
new file mode 100644
index 0000000..2babaf1
--- /dev/null
+++ b/src/test/resources/sampledata/Berlin/LAF-ErrG-neu.txt
@@ -0,0 +1,47 @@
+Gesetz zur Errichtung eines Landesamtes für Flüchtlingsangelegenheiten und Unterbringung
+(FlüLAErrG BE)
+Vom 14. März 2016
+§ 1 Errichtung; Bezeichnung
+Das Land Berlin errichtet mit Inkrafttreten dieses Gesetzes (Errichtungszeitpunkt) das Landesamt für Flüchtlingsangelegenheiten als nachgeordnete Behörde der für Soziales zuständigen Senatsverwaltung. Ab dem 16. April 2026 trägt es die Bezeichnung Landesamt für Flüchtlingsangelegenheiten und Unterbringung (LFU).
+§ 2 Aufgaben
+Das Landesamt für Flüchtlingsangelegenheiten und Unterbringung ist zuständig für
+1. Errichtung, Betrieb und Schließung von Erstaufnahmeeinrichtungen und Gemeinschaftsunterkünften sowie Beschaffung von Heim- und Wohnplätzen für wohnungslose Personen einschließlich Asylbewerberinnen und Asylbewerber sowie Ausländerinnen und Ausländer, die nach den §§ 15a, 22, 23 oder 24 des Aufenthaltsgesetzes aufgenommen worden sind, durch Verträge mit Dritten; Belegung von Erstaufnahmeeinrichtungen und Gemeinschaftsunterkünften sowie Beschaffung von Heim- und Wohnplätzen für Asylbewerberinnen und Asylbewerber sowie Ausländerinnen und Ausländer, die nach den §§ 15a, 22, 23 oder 24 des Aufenthaltsgesetzes aufgenommen worden sind, durch Verträge mit Dritten; Leistungen an den Personenkreis nach den §§ 22, 23 oder 24 des Aufenthaltsgesetzes im Rahmen der Erstversorgung; Leistungen an Asylbewerberinnen und Asylbewerber; Leistungen an ehemalige Asylbewerberinnen und Asylbewerber nach rechtskräftiger Ablehnung des Asylantrags während einer Übergangszeit; Leistungen an Ausländerinnen und Ausländer, die nach § 15a des Aufenthaltsgesetzes zu verteilen sind, bis zur Umsetzung der Verteilentscheidung; Leistungen nach dem Asylbewerberleistungsgesetz an Personen, die sich in Abschiebungshaft befinden; Leistungen nach dem Asylbewerberleistungsgesetz an Opfer der in § 25 Absatz 4a und 4b des Aufenthaltsgesetzes genannten Straftaten während der Ausreisefrist nach § 59 Absatz 7 des Aufenthaltsgesetzes bis zur Erteilung einer Aufenthaltserlaubnis, sowie gegebenenfalls an die mit ihnen in häuslicher Gemeinschaft lebenden minderjährigen Kinder;
+2. Ordnungsaufgaben gemäß Nummer 31 der Anlage zu § 2 Absatz 4 Satz 1 des Allgemeinen Sicherheits- und Ordnungsgesetzes in der Fassung der Bekanntmachung vom 11. Oktober 2006 (GVBl. S. 930), das zuletzt durch Artikel 1 des Gesetzes vom 1. April 2026 (GVBl. S. 154) geändert worden ist, in der jeweils geltenden Fassung;
+3. Beratung sowie Hilfen zur freiwilligen Rückkehr und Weiterwanderung von in Berlin aufhältlichen volljährigen Ausländerinnen und Ausländern und Familienangehörigen nach den von Bund und Ländern aufgelegten humanitären Förderprogrammen.
+Mit der Errichtung, dem Betrieb sowie der Schließung von Unterkünften kann das Landesamt für Flüchtlingsangelegenheiten und Unterbringung Unternehmen und Eigenbetriebe des Landes Berlin oder Dritte beauftragen.
+§ 3 Leitung des Landesamtes für Flüchtlingsangelegenheiten und Unterbringung
+Die Leitung des Landesamtes für Flüchtlingsangelegenheiten und Unterbringung obliegt der Präsidentin oder dem Präsidenten. Die Präsidentin oder der Präsident wird auf Vorschlag der für Soziales zuständigen Senatsverwaltung vom Senat ernannt.
+§ 4 Personal
+Das Landesamt für Flüchtlingsangelegenheiten und Unterbringung ist Dienststelle im Sinne von § 5 Absatz 1 des Personalvertretungsgesetzes in der Fassung der Bekanntmachung vom 14. Juli 1994 (GVBl. S. 337; 1995, S. 24), das zuletzt durch Artikel 4 des Gesetzes vom 2. Dezember 2024 (GVBl. S. 603) geändert worden ist, in der jeweils geltenden Fassung, und Personalwirtschaftsstelle.
+§ 5 Datenverarbeitung
+(1) Zum Zwecke der Verwaltung, des Betriebs und der Abrechnung von Aufnahmeeinrichtungen für Asylbewerberinnen und Asylbewerber sowie unerlaubt eingereiste Ausländerinnen und Ausländer im Sinne von § 15a des Aufenthaltsgesetzes und Gemeinschaftsunterkünften für wohnungslose Personen einschließlich Leistungsberechtigten nach dem Asylbewerberleistungsgesetz sowie für die Zuweisung von Unterkunftsplätzen ist das Erheben, Erfassen, Speichern und Verwenden folgender personenbezogener Daten der dort untergebrachten Personen durch das Landesamt für Flüchtlingsangelegenheiten und Unterbringung und die für die Ordnungsaufgaben bei Obdachlosigkeit zuständigen Behörden (zuweisende Stellen) zulässig:
+1. Familienname, Geburtsname, Vornamen, Aliasnamen,
+2. Geburtsdatum, Geburtsort,
+3. Staatsangehörigkeit,
+4. Geschlecht,
+5. Namen, Anschrift, Telefonnummern und E-Mail-Adressen der oder des Bevollmächtigten,
+6. Namen, Anschrift, Telefonnummern und E-Mail-Adressen der rechtlichen Betreuerin oder des rechtlichen Betreuers,
+7. die durch das angewandte IT-Fachverfahren generierte Personen-Identifikationsnummer (PID),
+8. Belegungsdaten (Angaben zur Unterkunft, Platzmerkmale, Einzugs- und Auszugsdatum, tägliche Anwesenheit, Angaben zur gemeinsamen Unterbringung mit anderen Personen),
+9. Feststellung des Vorliegens oder einer unmittelbaren Gefahr von Obdachlosigkeit oder Wohnungslosigkeit,
+10. Angaben zum aufenthaltsrechtlichen Status,
+11. AZR-Nummer gemäß § 3 Absatz 1 Nummer 2 des AZR-Gesetzes vom 2. September 1994 (BGBl. I S. 2265), das zuletzt durch Artikel 12 des Gesetzes vom 8. Mai 2024 (BGBl. 2024 I Nr. 152) geändert worden ist, in der jeweils geltenden Fassung,
+12. freiwillig gemachte Angaben zu Telefonnummern und E-Mail-Adressen,
+13. freiwillig gemachte Angaben zur Bankverbindung und
+14. freiwillig gemachte Angaben zum Aktenzeichen bei einer Behörde, die Sozialleistungen erbringt.
+Personenbezogene Daten nach Satz 1 Nummer 1 bis 6 sowie 8 und 11 sind nach Maßgabe des § 87 des Aufenthaltsgesetzes den in § 86 Satz 1 des Aufenthaltsgesetzes genannten Stellen auf Ersuchen zu übermitteln.
+(2) Sofern im Rahmen von Absatz 1 zum Zwecke der Aufgabenerfüllung besondere Kategorien personenbezogener Daten im Sinne des Artikels 9 Absatz 1 der Verordnung (EU) 2016/679 des Europäischen Parlaments und des Rates vom 27. April 2016 zum Schutz natürlicher Personen bei der Verarbeitung personenbezogener Daten, zum freien Datenverkehr und zur Aufhebung der Richtlinie 95/46/EG (Datenschutz-Grundverordnung) (ABl. L 119 vom 4.5.2016, S. 1; L 314 vom 22.11.2016, S. 72; L 127 vom 23.5.2018, S. 2; L 74 vom 4.3.2021, S. 35) in der jeweils geltenden Fassung durch die zuweisenden Stellen verarbeitet werden, ist dies nur zulässig, wenn die betroffene Person in die Verarbeitung zum Zwecke der bedarfsgerechten Unterbringung zuvor ausdrücklich eingewilligt hat. Die Verweigerung oder der Widerruf der Einwilligung hat keine Auswirkung auf den Anspruch auf Unterbringung. Wird die Einwilligung bei der betroffenen Person eingeholt, ist diese Person auf den Zweck der vorgesehenen Verarbeitung, auf die Folgen der Verweigerung der Einwilligung sowie auf die jederzeitige Widerrufsmöglichkeit gemäß Artikel 7 Absatz 3 der Verordnung (EU) 2016/679 und deren Folgen hinzuweisen. § 14 Absatz 3 des Berliner Datenschutzgesetzes vom 13. Juni 2018 (GVBl. S. 418), das zuletzt durch Artikel 9 des Gesetzes vom 10. Juli 2025 (GVBl. S. 270) geändert worden ist, in der jeweils geltenden Fassung bleibt unberührt.
+(3) Zum Zwecke der Aufgabenerfüllung nach Absatz 1 dürfen das Landesamt für Flüchtlingsangelegenheiten und Unterbringung und die zuweisenden Stellen den mit der Unterbringung und Betreuung beauftragten Dritten personenbezogene Daten der untergebrachten Personen nach Absatz 1 Satz 1 Nummer 1 bis 10 und nach Absatz 2 übermitteln, soweit dies zu deren Aufgabenerfüllung erforderlich ist. Die Dritten dürfen die ihnen übermittelten Daten nur für den Zweck verarbeiten, zu dessen Erfüllung sie ihnen übermittelt werden. Sie haben die Daten in demselben Umfang geheim zu halten wie die übermittelnden Stellen. Die bei Dritten beschäftigten Personen, welche diese Daten verarbeiten, sind spätestens bei der Übermittlung der Daten auf die Einhaltung der Pflichten nach den Sätzen 2 und 3 hinzuweisen. § 14 Absatz 3 des Berliner Datenschutzgesetzes bleibt unberührt. Auch auf die Einhaltung der sich daraus ergebenden Pflichten sind die bei den Dritten beschäftigten Personen spätestens bei der Übermittlung der Daten hinzuweisen. Die Dritten dürfen Belegungsdaten im Sinne von Absatz 1 Satz 1 Nummer 8 an das Landesamt für Flüchtlingsangelegenheiten und Unterbringung und die zuweisenden Stellen übermitteln.
+(4) Die nach den Absätzen 1 bis 3 gespeicherten personenbezogenen Daten sind spätestens sechs Jahre nach Beendigung der letztmaligen Unterbringung (Auszugsdatum) zu löschen. Die Frist beginnt mit Ablauf des Jahres, in dem die letztmalige Unterbringung beendet worden ist.
+(5) Zum Zwecke der Verwaltung, des Betriebs und der Abrechnung von Aufnahmeeinrichtungen und Gemeinschaftsunterkünften im Sinne des Absatzes 1 ist die Erhebung, Erfassung, Verwendung und Speicherung folgender personenbezogener Daten der dort im Zusammenhang mit der Unterbringung und Betreuung beauftragten Dritten sowie der von diesen zur unmittelbaren Aufgabenerfüllung beschäftigten und beauftragten Personen durch das Landesamt für Flüchtlingsangelegenheiten und Unterbringung zulässig:
+1. Familienname, Geburtsname, Vornamen,
+2. Geburtsdatum, Geburtsort,
+3. Geschlecht,
+4. Bezeichnung der Arbeitgebenden und der Beschäftigungsorte,
+5. in Dienstplänen enthaltene Daten über Dienstzeiten und Abwesenheiten,
+6. Bewacherregisteridentifikationsnummer gemäß § 3 Absatz 1 Nummer 1 Buchstabe b der Bewachungsverordnung vom 3. Mai 2019 (BGBl. I S. 692), die durch Artikel 2 der Verordnung vom 24. Juni 2019 (BGBl. I S. 882) geändert worden ist, in der jeweils geltenden Fassung,
+7. Umstand der Einsichtnahme in vertraglich geforderte Qualifikationsnachweise sowie Art und Datum derselben und
+8. Umstand der Einsichtnahme in ein Führungszeugnis nach § 30 Absatz 5 und § 30a Absatz 1 des Bundeszentralregistergesetzes in der Fassung der Bekanntmachung vom 21. September 1984 (BGBl. I S. 1229, 1985 I S. 195), das zuletzt durch Artikel 5 des Gesetzes vom 19. Juli 2024 (BGBl. 2024 I Nr. 245) geändert worden ist, in der jeweils geltenden Fassung, Datum des Führungszeugnisses und die Information, ob die das Führungszeugnis betreffende Person wegen einer Straftat nach den §§ 171, 174 bis 174c, 176 bis 180a, 181a, 182 bis 184g, 184i bis 184l, 225, 232 bis 233a, 234, 235 oder 236 des Strafgesetzbuches rechtskräftig verurteilt worden ist, soweit die Dritten bzw. die von diesen zur unmittelbaren Aufgabenerfüllung beschäftigten und beauftragten Personen mit der Beaufsichtigung, Betreuung, Erziehung oder Ausbildung Minderjähriger oder mit Tätigkeiten betraut sind, die in vergleichbarer Weise geeignet sind, Kontakt zu Minderjährigen aufzunehmen.
+Die nach Satz 1 Nummer 1 bis 7 gespeicherten Daten sind spätestens drei Jahre nach Beendigung des jeweiligen Vertragsverhältnisses mit dem Dritten zu löschen. Die Frist beginnt mit Ablauf des Jahres, in dem das Vertragsverhältnis beendet worden ist. Die nach Satz 1 Nummer 8 gespeicherten Daten sind unverzüglich zu löschen, wenn im Anschluss an die Einsichtnahme keine Tätigkeit nach Satz 1 Nummer 8 wahrgenommen wird. Sie sind spätestens sechs Monate nach der letztmaligen Ausübung einer in Satz 1 Nummer 8 genannten Tätigkeit zu löschen.
+(6) Die Zulässigkeit der Verarbeitung von personenbezogenen Daten durch das Landesamt für Flüchtlingsangelegenheiten und Unterbringung auf der Grundlage anderer Rechtsvorschriften bleibt unberührt.
+(7) Die für Soziales zuständige Senatsverwaltung kann die datenschutzrechtliche Verantwortlichkeit für die nach den Absätzen 1 bis 3 ausgeführten Verarbeitungen personenbezogener Daten gemäß Artikel 4 Nummer 7 und Artikel 24 und 26 der Verordnung (EU) 2016/679 allein oder gemeinsam mit dem Landesamt für Flüchtlingsangelegenheiten und Unterbringung sowie den zuweisenden Stellen tragen.
diff --git a/src/test/resources/sampledata/Berlin/SOURCES b/src/test/resources/sampledata/Berlin/SOURCES
new file mode 100644
index 0000000..abd745a
--- /dev/null
+++ b/src/test/resources/sampledata/Berlin/SOURCES
@@ -0,0 +1,50 @@
+Beispieldaten Berlin — Herkunft und Aufbereitung
+================================================
+
+1. Änderungsdokument
+ GVBl-2026-17_ASOG-LAF-AendG.pdf
+ Gesetz- und Verordnungsblatt für Berlin Nr. 17 vom 11. Juni 2026, S. 234:
+ Gesetz zur Änderung des Allgemeinen Sicherheits- und Ordnungsgesetzes und des Gesetzes
+ zur Errichtung eines Landesamtes für Flüchtlingsangelegenheiten und Unterbringung
+ vom 3. Juni 2026. Bezogen über pardok.parlament-berlin.de.
+
+2. Stammfassungen
+ LAF-ErrG-alt.txt Gesetz zur Errichtung eines Landesamtes für Flüchtlingsangelegenheiten
+ und Unterbringung vom 14. März 2016, Gültigkeit 16.04.2026–11.06.2026
+ LAF-ErrG-neu.txt dasselbe ab 12.06.2026, allein als Prüfmaßstab
+
+Bezugsweg
+---------
+Wie in Hessen und Schleswig-Holstein über eine Browsersteuerung; `gesetze.berlin.de` ist
+trotz des Eigennamens dieselbe juris-Anwendung (Kennung `bsbe`). Rezept in `Hessen/SOURCES`.
+Dokumentkennungen und Stichtage:
+
+ LAF-Errichtungsgesetz jlr-NNLBE000047A6 @20260416 / @20260612
+ ASOG Bln jlr-NNLBE00004772 @20260416 / @20260612
+
+Rechtsstellung: amtliche Werke nach § 5 UrhG; im Übrigen wie in `Hessen/SOURCES` dargelegt.
+
+Das ASOG ist nicht beigelegt — warum
+------------------------------------
+Artikel 1 des Änderungsgesetzes ändert zu fünf Sechsteln die *Anlage* des ASOG
+(Zuständigkeitskatalog Ordnungsaufgaben), und deren Einheiten sind nicht wie sonst als
+Aufzählungsmarken gesetzt, sondern als *Überschriften*: „Nummer 6“, „Nummer 23“, „Nummer 31“,
+jede im Portal eine eigene Einzelnorm. Der Stellenauflöser sucht dagegen eine Marke „6.“ im
+Text der Anlage — und findet dort vielerlei, denn gewöhnliche Aufzählungen zählen ebenso.
+Belegt ist das: Werden die Überschriften versuchsweise in Marken umgeschrieben, steigt die
+Zahl der angewandten Befehle von zwei auf drei; mehrdeutig bleibt der Rest.
+
+Das ist keine Extraktions-, sondern eine Modellfrage: Die Nummern einer Anlage brauchen einen
+eigenen Rang zwischen Norm und Absatz. Solange er fehlt, brächte die Beilage von zweimal
+380 kB Stammfassung keinen Prüfgewinn. Der Bezugsweg oben führt in zwei Abrufen wieder
+dorthin.
+
+Ein zweiter Befund für dieselbe Arbeit: Das Berliner Portal setzt die amtlichen Satznummern
+nicht als Superskripte, sondern als *angeklebte Ziffern* („(2) 1Gegen einen …“). Der
+kanonische Klartext verlangt Superskripte; die Umschrift gehört in die Aufbereitung, sonst
+weicht die angewandte Fassung von der amtlichen Nachfassung schon in der Zählung ab.
+
+Aufbereitung zum kanonischen Klartext
+-------------------------------------
+Maschinell wie in Hessen. Das LAF-Errichtungsgesetz führt kein Inhaltsverzeichnis als eigene
+Norm; der Wortlaut beginnt deshalb beim ersten Normkopf, der für sich auf einer Zeile steht.
diff --git a/src/test/resources/sampledata/Landesrecht-Beispiele.adoc b/src/test/resources/sampledata/Landesrecht-Beispiele.adoc
index 9a0156c..489fbb4 100644
--- a/src/test/resources/sampledata/Landesrecht-Beispiele.adoc
+++ b/src/test/resources/sampledata/Landesrecht-Beispiele.adoc
@@ -31,7 +31,9 @@ Reihenfolge des Inhaltsstroms *ist* bereits die Lesereihenfolge, eine koordinate
Spaltenerkennung ist nicht nötig. Verbleibende Layout-Eigenheit sind ganzseitenbreite Rahmen
(Titelblock, laufender Seitenkopf), die an falscher Stelle im Strom stehen — der Seitenkopf wird
herausgeschnitten, der Titelblock landet weiterhin mitten im Text. Tiefe Verschachtelung
-a)/aa)/bb)/cc); Artikel 1 ändert eine *Anlage* mit eigener Nummern-Gliederung.
+a)/aa)/bb)/cc); Artikel 1 ändert eine *Anlage*, deren Einheiten als *Überschriften* („Nummer 6")
+statt als Aufzählungsmarken gesetzt sind. Artikel 2 (LAF-Errichtungsgesetz) ist ein voller
+Akzeptanzfall; das Portal setzt die amtlichen *Satznummern als angeklebte Ziffern* („(2) 1Gegen …").
|Schleswig-Holstein
|`SchleswigHolstein/GVOBl-2026-27_Kommunalrecht-AendG.pdf` — GVOBl. Schl.-H. 2026/27 vom
@@ -115,6 +117,51 @@ aufgehobenen Platzhalter hinweg. Voller Akzeptanzfall, Stammfassung
(167 bzw. 86 Normen). Artikel 3 ändert ein anderes Änderungsgesetz und wird zu Recht nicht
gewählt. Beide Stammfassungen sind über die Browsersteuerung beschafft.
+* *Nordrhein-Westfalen* ist der Massentest-Fall: aus demselben Heft sind alle vier ändernden
+ Artikel als Akzeptanzfälle hinterlegt.
++
+--
+`EndToEndTest.tmzGesetzAcceptance`:: Artikel 3 (Telemedienzuständigkeitsgesetz), vier Befehle,
+kein Rest. Stamm `NRW/TMZ-Gesetz-alt.txt`.
+`EndToEndTest.wdrGesetzAcceptance`:: Artikel 1 (WDR-Gesetz), 101 Befehle an 31 Normen, davon 100
+angewandt. Stamm `NRW/WDR-Gesetz-alt.txt` (Fassung vom 01.01.2025). Der Fall trägt die
+Umnummerierungs-Kaskaden (§ 3: Absatz 2 → zwei Absätze, die Absätze 3 bis 11 rücken auf, ein neuer
+Absatz 13 kommt hinzu; § 15 Absatz 3: Nummer 22 entfällt, 23 bis 37 rücken auf), den Sammelrahmen
+„Es werden ersetzt:“ und die Angabe-Befehle auf die Inhaltsübersicht. Einziges Residuum ist
+Nr. 13 e) aa): „der Punkt am Ende des Satzes“ ist in einer zweisätzigen Nummer nicht eindeutig.
+`EndToEndTest.lmgNrwAcceptance`:: Artikel 2 (Landesmediengesetz), 18 Befehle, kein Rest. Stamm
+`NRW/LMG-NRW-alt.txt` (Fassung vom 01.01.2025).
+`EndToEndTest.rundfunkAusfuehrungsgesetzAcceptance`:: Artikel 4 (17. RÄStV-AusfG), ein Befehl,
+kein Rest. Stamm `NRW/17-RAEStV-AusfG-alt.txt` (Erstfassung vom 17.12.2015, bis 2026 unverändert).
+Der Artikel führt seinen Befehl *ohne* Gliederungspunkt — der Text nach der Änderungsformel ist
+der Befehl —, und das Zitat der neuen Fassung trägt verschachtelte Anführungszeichen (ein
+vollständiges „durch Artikel 3 …“ innerhalb einer eckigen Klammer). Beides trägt die vorhandene
+Maschinerie.
+--
++
+Alle vier Ergebnisse sind normweise gegen die amtliche Fassung vom 01.04.2026 abgeglichen. Es
+bleiben nur Abweichungen, in denen die amtliche Nachfassung selbst vom Befehlswortlaut abweicht
+(§ 15 WDR-Gesetz: „des“ vor „Bundesreisekostengesetzes“ entfallen; § 7 und § 21 WDR-Gesetz: ein
+überzähliges Anführungszeichen aus dem Änderungsgesetz; § 93 LMG NRW: zusätzlich die Wörter
+„Film (“ gestrichen) — ÄndGgner wendet dort den Wortlaut an. Damit ist das Heft GV. NRW. 7/2026
+vollständig belegt.
+* *Berlin* ist zur Hälfte umgesetzt (`EndToEndTest.asogLafAendGBerlin`). Artikel 2
+ (LAF-Errichtungsgesetz) ist ein *voller* Akzeptanzfall: beide Befehle angewandt, alle fünf
+ Normen gleich der amtlichen Nachfassung vom 12. Juni 2026; die Stammfassung ist über die
+ Browsersteuerung beschafft. Artikel 1 (ASOG) wird *vollständig erkannt* — alle sechs Befehle,
+ einschließlich der Änderungen an der unnummerierten Anlage —, aber nicht angewandt: Fünf der
+ sechs zielen auf Einheiten der Anlage, die dort als Überschriften stehen („Nummer 6“,
+ „Nummer 23“, „Nummer 31“) und nicht als Aufzählungsmarken. Sie brauchen einen eigenen Rang
+ zwischen Norm und Absatz; Begründung und Bezugsweg in `Berlin/SOURCES`.
+* *Hessen* ist *vollständig* umgesetzt (`EndToEndTest.verkehrsZustVAendVOHessen`): alle
+ 21 Befehle des Artikels 1 werden erkannt und angewandt, und alle 52 Normen gleichen danach
+ zeichengenau der amtlichen Nachfassung vom 4. Februar 2026. Die Stammfassung ist über eine
+ *Browsersteuerung* aus dem Landesrechtsportal beschafft; damit ist die juris-Sackgasse
+ aufgebrochen (siehe „Beschaffung der Stammfassungen“).
+
+* Baden-Württemberg (GBl 2026 Nr. 26): großes Anlage-lastiges Änderungsgesetz (§§ 4–57a + Anlagen
+ 1/3b/4b); Stammfassung/Akzeptanztest noch offen.
+
== Beschaffung der Stammfassungen
Für einen vollen Akzeptanztest wird die Fassung *vor* dem Änderungsgesetz gebraucht. Welcher Weg
@@ -182,11 +229,19 @@ Klartext-Zweig des Loaders normalisiert zur Sicherheit mit.
== Noch offen
-* *Berlin — Stammfassung noch nicht beschafft* (desgleichen): `gesetze.berlin.de` ist trotz des Eigennamens dieselbe
+* *Berlin, ASOG — Stammfassung bewusst nicht beigelegt*, weil sie ohne den Rang der
+ Anlagen-Einheiten keinen Prüfgewinn brächte; der Bezugsweg steht in `Berlin/SOURCES` und führt
+ in zwei Abrufen wieder dorthin. Zur Geschichte: `gesetze.berlin.de` ist trotz des Eigennamens dieselbe
juris-Anwendung wie das schleswig-holsteinische Portal (Kennung `bsbe`) und ebenso
anmeldepflichtig. In der Wayback Machine gibt es keine serverseitig gerenderten Volltexte des
ASOG oder des LAF-Errichtungsgesetzes.
-* *Anlagen im kanonischen Klartext*: Anlagen sind als Änderungsziel unterstützt — im gii-XML sind
+* *Anlagen im kanonischen Klartext* — der Normkopf ist erledigt, der Rang der Nummern nicht:
+ Der `LandesRechtTextParser` kennt seit dieser Welle Anlagen-Normköpfe („Anlage“, „Anlage 2“,
+ „Anhang“), und alles hinter ihnen gehört zur Anlage — ihre inneren Überschriften gliedern nicht
+ das Gesetz, und ein Paragraph, den sie zitieren, eröffnet keine Norm. Offen bleibt die
+ *Adressierung ihrer Einheiten*: Berlins Anlage überschreibt sie mit „Nummer 6“, während der
+ Stellenauflöser eine Marke „6.“ im Text sucht, die dort vielfach vorkommt. Nötig ist ein eigener
+ Rang zwischen Norm und Absatz. Die ältere Fassung dieses Punktes, zur Einordnung: Anlagen sind als Änderungsziel unterstützt — im gii-XML sind
sie eigene Normen („Anlage 8“, „Anhang“), und `Stelle.anlagenEnbez()` löst sie auf; im GEG werden
anlagenbezogene Befehle angewandt. Der `LandesRechtTextParser` kennt jedoch nur „§“- und
„Art.“-Normköpfe: Eine handgepflegte Stammfassung kann *keine* Anlage tragen. Das ist die
@@ -206,14 +261,21 @@ Klartext-Zweig des Loaders normalisiert zur Sicherheit mit.
Kein Land scheitert noch an reiner Extraktionsschwäche; offen sind Modell- und Beschaffungsfragen.
Nach absteigendem Nutzen:
-. *Die beiden übrigen Stammfassungen über die Browsersteuerung holen* — Berlin (ASOG,
- LAF-Errichtungsgesetz) und Baden-Württemberg (Kommunalwahlordnung). Der Weg ist unter
- „Beschaffung der Stammfassungen“ beschrieben; Hessen und Schleswig-Holstein sind ihn gegangen.
-. *Anlagen-Normköpfe im `LandesRechtTextParser`* ergänzen (er kennt neben „§“/„Art.“ inzwischen
- auch die Inhaltsübersicht als Norm). Berlins Artikel 1 und Baden-Württembergs Verordnung ändern
- Anlagen; mit deren Stammfassungen aus Schritt 1 wird die Ergänzung end-to-end prüfbar.
+. *Den Rang der Anlagen-Einheiten einführen* — die Nummern einer Anlage stehen zwischen Norm und
+ Absatz. Daran hängen Berlins Artikel 1 (fünf von sechs Befehlen) und Baden-Württembergs
+ Anlagen 1, 3b und 4b. Der Belegfall ist unmittelbar zur Hand: Berlins ASOG ist in zwei Abrufen
+ wiederbeschafft (`Berlin/SOURCES`). Mitzuerledigen ist die Umschrift der Berliner Satznummern
+ (angeklebte Ziffern statt Superskripte).
+. *Baden-Württembergs Kommunalwahlordnung über die Browsersteuerung holen* — der Weg ist unter
+ „Beschaffung der Stammfassungen“ beschrieben; Hessen, Schleswig-Holstein und Berlin sind ihn
+ gegangen.
. *Berlin, ganzseitenbreite Rahmen* (XY-Cut) — die letzte offene Layout-Frage, siehe „Noch offen“.
+*Erledigt:* _Berlins Artikel 2_ ist ein voller Akzeptanzfall, und der Klartext-Parser trägt
+nunmehr *Anlagen als eigene Normen*. Zwei Berliner Befunde stehen für die nächste Arbeit fest: Die
+Einheiten einer Anlage können als Überschriften gesetzt sein statt als Marken, und das Portal
+schreibt die amtlichen Satznummern als angeklebte Ziffern statt als Superskripte.
+
*Erledigt:* _Schleswig-Holstein_ ist vollständig umgesetzt — der erste Fall mit *zwei*
Stammgesetzen in einem Änderungsgesetz. Zwei Eigenheiten des Portalsatzes waren zu beheben: Er
trennt die Sachnummer ab („§ 57 c“ statt „§ 57c“, zehn Normen der Gemeindeordnung wären sonst
@@ -255,5 +317,6 @@ hängt; für Sachsen,
Niedersachsen und die vier NRW-Artikel die vollständige Anwendung bis auf das eine benannte
Residuum im WDR-Gesetz; für Hessen die vollständige Anwendung und den Gleichlauf
aller 52 Normen mit der amtlichen Nachfassung; für Schleswig-Holstein die vollständige Anwendung auf beide
-Stammgesetze; für Berlin die vollständige *Erkennung*. Wer eine dieser Zahlen
+Stammgesetze; für Berlin die vollständige Anwendung des Artikels 2 und die
+vollständige *Erkennung* des Artikels 1. Wer eine dieser Zahlen
ändern muss, sollte den Grund im Test vermerken.