)]}'
{
  "log": [
    {
      "commit": "65eff08b32a0f00ff0f5e4bda3fe5793f631ed64",
      "tree": "1d101859b51c80bc117ec72a871933575ed8b2f3",
      "parents": [
        "f20828ffd8ea9d554566636a9c53a3abd57507c5"
      ],
      "author": {
        "name": "Matthias Andreas Benkard",
        "email": "code@mail.matthias.benkard.de",
        "time": "Sat Jul 18 12:24:32 2026 +0200"
      },
      "committer": {
        "name": "Matthias Andreas Benkard",
        "email": "code@mail.matthias.benkard.de",
        "time": "Sun Jul 19 09:00:01 2026 +0200"
      },
      "message": "Support Bavarian state law (BayJG) with Art./§ inversion and superscripts\n\nExtend ÄndGgner from federal-only to Bavarian state law. Bavarian base\nlaws are structured in Artikel while their amending acts are structured\nin Paragraphen (inverted from the Bund); official sentence numbers and\nfootnote markers are carried as Unicode superscripts (¹²³, ⁶)).\n\n- Generalise Stelle.Paragraph to carry a sigil (\"§\" or \"Art.\") and route\n  it through recogniser, applier and resolver (bit-identical Bund output).\n- Superscript pipeline: geometric detection in FontgroessenFilter\n  (SuperskriptModus BEHALTEN), Superskript util, exact sentence splitting\n  in SatzTeiler, label-based sentence resolution.\n- BayRechtLoader/BayRechtTextParser for gesetze-bayern.de PDF/plaintext.\n- §-structured amending acts, GVBl/Landtag column titles, non-breaking\n  spaces, the GVBl continuation quote; Bavarian command forms (footnote\n  aufhebung, Satznummerierung streichung, Wortlaut forms, Halbsatz,\n  gapping chains).\n\nAcceptance (EndToEndTest.bayJgGvblAcceptance): the pre-2026 BayJG\nfassung (BayJG-alt.txt, reconstructed from Wayback single-article\nsnapshots) with GVBl 6/2026 §§ 1-2 applied — 154 commands, 0 unknown,\n149 applied automatically, 5 pinned residuals (follow-up edits inside\ntwo multi-step renumbering sequences in Art. 29a and Art. 56).\n\nApplication-side fixes surfaced by the acceptance run (all Bund-safe):\nsentence-start superscript before §; sentence boundaries \u003d {0} ∪ {each\nnumber ≥ 2}; gapping scope inheritance for bare word operations;\nfootnote definition lines hidden from word operations; absatz aufhebung\nmarks \"(weggefallen)\" keeping its number, and absatz renumbering\noverwrites an empty placeholder (weggefallen/gegenstandslos) target.\n\n211 tests green (mvnw verify); federal reference numbers unchanged.\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\nChange-Id: Iebae4c17ca90755c5fd36251362042f3d5796fd0\n"
    },
    {
      "commit": "91a57498aa4acf266d0ab255aa06c18527846eec",
      "tree": "5c53b08a64f87f924f9d59c6feafde500fbb9427",
      "parents": [
        "8ae49729ee18a102d503324f2be49c35694b244a"
      ],
      "author": {
        "name": "Matthias Andreas Benkard",
        "email": "code@mail.matthias.benkard.de",
        "time": "Mon Jul 13 21:33:09 2026 +0200"
      },
      "committer": {
        "name": "Matthias Andreas Benkard",
        "email": "code@mail.matthias.benkard.de",
        "time": "Mon Jul 13 21:33:09 2026 +0200"
      },
      "message": "Add AGG, BayJG, GEG, ProdHaftG, and UWG sample data.\n\nFive new datasets with provenance in SOURCES files:\n\n* UWG: 3. UWGAendG (BGBl. 2026 I Nr. 43) in the new digital BGBl\n  format, plus drafts.\n* GEG: the 2023 \"Heizungsgesetz\" (BGBl. 2023 I Nr. 280, new format)\n  and the pending GModG 2026 drafts.\n* AGG: 2. AGGAendG drafts (RefE/RegE/BT-Drs 21/6178) -- the base XML\n  predates the bill, so this dataset produces real diffs -- and the\n  official BMJV synopsis as ground truth.\n* ProdHaftG: product-liability modernization drafts (Artikel 1 is a\n  replacement act, Artikel 2 amends the old law), with official\n  synopsis.\n* BayJG: Bavarian hunting-law amendment (GVBl. 2026 S. 113) -- state\n  law is not yet supported by the tool; kept for future work.\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\nChange-Id: I8c33b6a19178f73cece9c9da99c713009016e578\n"
    }
  ]
}
