aboutsummaryrefslogtreecommitdiff
path: root/src/main/resources/sampledata
Commit message (Collapse)AuthorAgeFilesLines
* Add North Rhine-Westphalia TMZ-Gesetz acceptance caseMatthias Andreas Benkard2026-07-252-1/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Article 3 of the 22. Rundfunkänderungsgesetz (GV. NRW. 2026 S. 202) amends the Telemedienzuständigkeitsgesetz. All four commands apply cleanly, and the result matches the official consolidated version of 1 April 2026. recht.nrw.de turned out to be the one remaining state portal that serves consolidated laws as server-rendered HTML, with the version history encoded in the URL date prefix — so the pre-amendment stem (27 Apr 2022) was directly obtainable. Two fixes were needed: * LandesRechtTextParser read the parenthesised title suffix wholly as the abbreviation. State laws routinely carry both short title and abbreviation there ("(Telemedienzuständigkeitsgesetz – TMZ-Gesetz)"), and the amendment act cites the short title, so article selection never matched. The parser now splits at the dash. * ZitatExtraktor swallowed the rest of the document when a closing quotation mark is missing in the official text (Article 2 no. 11 here), which hid Articles 3 to 5 entirely. An amendment act never quotes across an article heading, so an open quotation is now closed before a bare "Artikel N" line, with a warning. Quoted paragraphs are unaffected: Bavarian norm heads read "Art. N". 223 tests green; all previously pinned figures unchanged. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Change-Id: I78470075d9be2433966b821b6fe1e21808996c46
* Add Schleswig-Holstein extraction case and three cleanup fixesMatthias Andreas Benkard2026-07-251-1/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The GVOBl. Schl.-H. amendment act (Kommunalrecht, 2026/27) brings three conventions the tool had not seen: * a running two-line page header that sits between articles and glued itself onto the following article heading, * superscript footnote markers on article headings ("Artikel 1 ¹)"), which defeated the article split, and * ragged-right typesetting, where the geometric margin detection finds no alignment cluster and reports full lines as hard line ends, so a trailing hyphen was never joined. All three are fixed in TextBereiniger; the hyphen rule now trusts the extractor's trailing-space signal over the geometric class. A full acceptance test is not possible: the Schleswig-Holstein law portal serves document bodies only through an authenticated API, and the last freely archived consolidated Gemeindeordnung (14 Nov 2022) predates the amended § 34a. The new test therefore covers everything up to and including command recognition; the blocker is recorded in Landesrecht-Beispiele.adoc. 219 tests green; Bund/Bayern/Sachsen/Niedersachsen figures unchanged. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Change-Id: I9b3ab8a756372504b51c4d410b491fded255da96
* Add Lower Saxony NEFG acceptance case and two parser robustness fixesMatthias Andreas Benkard2026-07-242-1/+98
| | | | | | | | | | | | | | | | | | | | | | | | | | | Second §-structured Landesrecht case for wave six: the Lower Saxony ELER Support Act (NEFG, unchanged since 2022, derived from the two-column Nds. GVBl 2022 No. 33) plus the amending act of 28 Jan 2026 (Nds. GVBl 2026 No. 10). Five of seven commands apply — both "erhält folgende Fassung" re-enactments (§ 1(1), § 2), the citation replacement in § 1(5), the words insertion in § 6(1), and the § 13 → § 14 renumbering. - LandesRechtTextParser: a norm head no longer accepts a title ending in a full stop, so a cross-reference sentence at line start ("§ 7 GAPInVeKoSG findet entsprechend Anwendung.") is not misread as a norm head "§ 7" (which had made the monotonicity check swallow the norms in between). - TextBereiniger: strip the Lower Saxony GVBl running footer and publisher line. The footer sat between two enumerated items and otherwise attached to the preceding re-enactment quote, defeating its end-of-sentence anchor. - Add sampledata/Niedersachsen/NEFG-alt.txt and EndToEndTest.nefgAcceptance. Two insertion forms remain documented residues (manuell prüfen): inserting a §-block with a space-separated sub-number ("§ 2 a") and a chapter-scoped §-block insertion ("In Kapitel 4 wird nach § 12 … angefügt"). 221 tests green; federal, Bavarian and Saxon pinned numbers unchanged. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Change-Id: Ie23eee1f596ec8eecc6a73f6ce585a22e73ec6c9
* Add Saxony SächsBeamtVG acceptance case (first non-Bavarian Landesrecht)Matthias Andreas Benkard2026-07-242-1/+1825
| | | | | | | | | | | | | | | | | | | | | | Complete the first §-structured Landesrecht acceptance case for wave six: the Saxon Civil Servants' Pension Act (SächsBeamtVG) in its 1 Feb 2025 version plus the amending act of 13 April 2026 (SächsGVBl. S. 134). All five commands are recognised and applied without residue — the amount replacements in § 47 and the re-enactment of § 80(1) sentence 2. - LandesRechtTextParser: recognise arabic, keyword-first structural headings ("Abschnitt 1", "Unterabschnitt 2", "Teil 3") via GLIEDERUNG_ARABISCH, in addition to Bavaria's roman "I. Abschnitt" form. Bavaria behaviour unchanged. - TextBereiniger: strip the footer of revosax full-text output (REVOSAX_FUSS, "https://…revosax… Fassung vom … Seite N von M"). - Add the consolidated pre-amendment stem as canonical plaintext (sampledata/Sachsen/SaechsBeamtVG-alt.txt, derived from the archived revosax full text) and EndToEndTest.saechsBeamtVgAcceptance (5 applied, 0 manual). 220 tests green; federal and Bavarian pinned numbers unchanged. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Change-Id: I8e878bc9506f24028cf643a873de000f3d066d64
* Add Landesrecht amendment samples from eight further LänderMatthias Andreas Benkard2026-07-1910-0/+46826
| | | | | | | | | | | | | | | Collect real amendment gazettes/ordinances from Berlin, Schleswig-Holstein, Hessen, Niedersachsen (two hefts), Baden-Württemberg, Nordrhein-Westfalen, Sachsen and Thüringen as candidates for a further enhancement wave, plus an .adoc overview. Unlike Bavaria (Art./§ inversion) these Länder use § in their stem laws; the new test dimensions are PDF layout (Berlin two-column, Hessen letter-spacing) and command idioms ("erhält folgende Fassung", superscript Artikel footnote markers, amtliche Satznummern in a § context). Only the amendment documents are included so far; the consolidated stem versions and Rheinland-Pfalz remain open. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Change-Id: I0e3e761763038abda144266381cf59f8d8f3bf78
* Support Bavarian state law (BayJG) with Art./§ inversion and superscriptsMatthias Andreas Benkard2026-07-192-0/+580
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Extend ÄndGgner from federal-only to Bavarian state law. Bavarian base laws are structured in Artikel while their amending acts are structured in Paragraphen (inverted from the Bund); official sentence numbers and footnote markers are carried as Unicode superscripts (¹²³, ⁶)). - Generalise Stelle.Paragraph to carry a sigil ("§" or "Art.") and route it through recogniser, applier and resolver (bit-identical Bund output). - Superscript pipeline: geometric detection in FontgroessenFilter (SuperskriptModus BEHALTEN), Superskript util, exact sentence splitting in SatzTeiler, label-based sentence resolution. - BayRechtLoader/BayRechtTextParser for gesetze-bayern.de PDF/plaintext. - §-structured amending acts, GVBl/Landtag column titles, non-breaking spaces, the GVBl continuation quote; Bavarian command forms (footnote aufhebung, Satznummerierung streichung, Wortlaut forms, Halbsatz, gapping chains). Acceptance (EndToEndTest.bayJgGvblAcceptance): the pre-2026 BayJG fassung (BayJG-alt.txt, reconstructed from Wayback single-article snapshots) with GVBl 6/2026 §§ 1-2 applied — 154 commands, 0 unknown, 149 applied automatically, 5 pinned residuals (follow-up edits inside two multi-step renumbering sequences in Art. 29a and Art. 56). Application-side fixes surfaced by the acceptance run (all Bund-safe): sentence-start superscript before §; sentence boundaries = {0} ∪ {each number ≥ 2}; gapping scope inheritance for bare word operations; footnote definition lines hidden from word operations; absatz aufhebung marks "(weggefallen)" keeping its number, and absatz renumbering overwrites an empty placeholder (weggefallen/gegenstandslos) target. 211 tests green (mvnw verify); federal reference numbers unchanged. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Change-Id: Iebae4c17ca90755c5fd36251362042f3d5796fd0
* Add AGG, BayJG, GEG, ProdHaftG, and UWG sample data.Matthias Andreas Benkard2026-07-1342-0/+29415
| | | | | | | | | | | | | | | | | | | | Five new datasets with provenance in SOURCES files: * UWG: 3. UWGAendG (BGBl. 2026 I Nr. 43) in the new digital BGBl format, plus drafts. * GEG: the 2023 "Heizungsgesetz" (BGBl. 2023 I Nr. 280, new format) and the pending GModG 2026 drafts. * AGG: 2. AGGAendG drafts (RefE/RegE/BT-Drs 21/6178) -- the base XML predates the bill, so this dataset produces real diffs -- and the official BMJV synopsis as ground truth. * ProdHaftG: product-liability modernization drafts (Artikel 1 is a replacement act, Artikel 2 amends the old law), with official synopsis. * BayJG: Bavarian hunting-law amendment (GVBl. 2026 S. 113) -- state law is not yet supported by the tool; kept for future work. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Change-Id: I8c33b6a19178f73cece9c9da99c713009016e578
* Add IfSG sample data.Matthias Andreas Benkard2026-07-1311-0/+2354
The Infektionsschutzgesetz as gii-norm XML, EPUB, and PDF (consolidated as of 2020-11-20, i.e. already including the Art. 1 changes below), the Drittes Bevoelkerungsschutzgesetz (BGBl. I 2020 S. 2397) as published, and the Bundestag/Bundesrat drafting documents, with provenance URLs in SOURCES. Used by the end-to-end smoke test. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Change-Id: I1221734ea3e3dab705151421774151438be1b337