| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Bump all dependencies and plugins to current versions. Replace the
tika-parsers bundle with a direct PDFBox dependency (we need
PDFTextStripper control), add java-diff-utils for the synopsis diff,
and add JUnit 5 with AssertJ for testing. Drop unused dependencies
(tess4j, Lanterna, term4j, sqlite-jdbc, imageio codecs, annotation
libraries) in favour of jspecify. Regenerate the Maven wrapper with
the official plugin (Takari is dead) and remove the vestigial Ant
wrapper and Tika configuration.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Change-Id: I0e1813b3967027cbb0bb978591d345ce138fa0a0
|
|
|
With the new configuration, Tika can now extract text from PDFs and
XML documents.
Also configures logging for the application.
Change-Id: I7a89c2b232ed4e220665dd335a5f5a0cc3ef2994
|