)]}'
{
  "commit": "ffc553b4d2ad5b1f4c1a4dec0ad9c19d96556378",
  "tree": "1b04665246208c9e149a5efc26e67497db5001a9",
  "parents": [
    "2b1841e17533543d1cb15220ca86a2a37c853daf"
  ],
  "author": {
    "name": "Matthias Andreas Benkard",
    "email": "code@mail.matthias.benkard.de",
    "time": "Sat Aug 15 12:18:32 2026 +0200"
  },
  "committer": {
    "name": "Matthias Andreas Benkard",
    "email": "code@mail.matthias.benkard.de",
    "time": "Sat Aug 15 12:18:32 2026 +0200"
  },
  "message": "Die Beschlussempfehlung liefert die beschlossene Fassung\n\nBisher wurde eine Beschlussempfehlung erkannt und mit Begründung übergangen:\nIhre maßgebliche Fassung steht in der zweispaltigen Zusammenstellung, deren\nrechte Spalte für sich unlesbar ist. Sie druckt Unverändertes nicht ab,\nsondern vermerkt bloß „unverändert“ — und zwar nicht nur je\nGliederungspunkt, sondern auch zeilenweise innerhalb zitierter Blöcke,\nweshalb ihre Anführungszeichen nicht aufgehen. Eine Auflösung über die\nGliederungspfade scheitert daran nachweislich (45 statt 117 Befehlen).\n\nMaßgeblich ist die Grundlinie: Beide Spalten sind zeilensynchron gesetzt,\njeder Vermerk steht auf der Höhe der Entwurfszeile, die er meint. Der neue\n`ZusammenstellungsLeser` führt sie über Seite und Grundlinie in eine\ngemeinsame Lesereihenfolge zusammen und entscheidet dann Zeile für Zeile:\n„unverändert“ holt den Wortlaut aus der Entwurfsspalte, „entfällt“ streicht\nihn, sonst gilt die Ausschussspalte. Das Vokabular der rechten Spalte ist\nausgezählt genau zweiteilig — 166-mal „unverändert“, 17-mal „entfällt“.\n\nDabei meint „unverändert“ den Wortlaut, nicht die Zählung: Streicht der\nAusschuss einen Punkt, rücken die folgenden auf, und sein „5. unverändert“\nsteht der Entwurfsnummer 6 gegenüber. Die Marke kommt deshalb von rechts,\nder Wortlaut von links.\n\nVoraussetzung dafür war, die Geometrie aus dem `FontgroessenFilter`\nherauszuführen. Sonst verließ ihn nur das End-X der Zeile; jetzt trägt jede\nZeile Seite, Grundlinie und End-X (`FontgroessenFilter.Zeile`). Die\nMetadaten reisen weiterhin im Textstrom mit, statt nebenher gesammelt zu\nwerden: Nur so ist ihre Zuordnung zu den Zeilen gesichert, denn PDFBox\nschreibt Zeilentrenner an mehreren Stellen. Der Schritt ist reine\nUmstrukturierung, sämtliche gepinnten Zahlen bleiben unverändert.\n\nDrei Fehler standen im Weg, alle in der Spaltentrennung:\n\n* Der Steg wurde einschließlich der Leerzeichen-Glyphen gemessen, die im\n  Textstrom fast bis an die nächste Spalte reichen. Ein 7-pt-Steg schrumpfte\n  so auf 4,7 pt und galt als durchlaufender Text, was in BT-Drs. 20/7619 die\n  gesperrte Marke des Punktes 14 mitten entzweiriss. Gemessen wird jetzt an\n  den sichtbaren Zeichen; die Schwelle sinkt von 12 auf 6 pt und liegt damit\n  belegt zwischen dem schmalsten echten Steg (6,9 pt) und dem breitesten\n  Wortzwischenraum einer ganzseitenbreiten Zeile (5,4 pt) — in beiden\n  Belegdokumenten übereinstimmend.\n\n* Gedrehter Text hat Koordinaten in seinem eigenen Bezugssystem. Der\n  Randvermerk „Vorabfassung – wird durch die lektorierte Fassung ersetzt“\n  lief mit seiner vermeintlichen Grundlinie quer durch beide Spalten und\n  zerschnitt deren Zeilenfolge. Beim Spaltenauszug bleibt er nun draußen;\n  beim ungeteilten entfernt ihn wie bisher der TextBereiniger.\n\n* Die Zeilenenden müssen je Spalte klassifiziert werden, bevor die Spalten\n  zusammenkommen: Ihre Satzspiegelränder liegen verschieden, in der\n  gemischten Fassung fände keine ihren eigenen Ausrichtungs-Cluster wieder\n  und die Silbentrennung bliebe ungeheilt („An- gabe“).\n\nDie Quellenzeile weist die verwendete Spalte als „[Beschlussempfehlung …,\nAusschussfassung]“ aus. Lässt sich die Zusammenstellung nicht auflösen,\nwird die Datei nach wie vor mit Begründung übergangen — eine halb\naufgelöste Fassung auszugeben wäre schlimmer als keine.\n\nZwei Belegfälle: BT-Drs. 20/7619 (GEG) mit 67 angewandten Befehlen, wobei\ndie Ausschussfassung mehr Befehle trägt als der Regierungsentwurf daneben —\nder Ausschuss hat zwei Artikel ergänzt —, und BT-Drs. 19/24334 (Drittes\nBevölkerungsschutzgesetz) mit 47. Der große manuelle Rest hat denselben\nGrund wie beim Entwurf: Das Beispiel-XML ist die Urfassung des GEG von 2020,\ngeändert wird eine Fassung von 2023. Die verbliebenen zwei unerkannten\nBefehle gehen auf Setzfehler der amtlichen Drucksache zurück (fehlender\nSchlusspunkt, überzähliges Anführungszeichen) und sind zeichengenau so\nübernommen.\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\nChange-Id: Id5db19cb8f27a51af0c23cfd4a9969dd4120f569\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "24083c78f9ae00e6ad1816c4132abb7bf0265db5",
      "old_mode": 33188,
      "old_path": "README.adoc",
      "new_id": "bd0a4eea2151a269633fadb607f9fe17840aada8",
      "new_mode": 33188,
      "new_path": "README.adoc"
    },
    {
      "type": "modify",
      "old_id": "2427c4ec53bd1b36602f34f92a21c5401f079cf6",
      "old_mode": 33188,
      "old_path": "src/main/java/eu/mulk/aendggner/Pipeline.java",
      "new_id": "4b2b7d95db4ad1de30cd9ac4aa8ee7f7b317ad86",
      "new_mode": 33188,
      "new_path": "src/main/java/eu/mulk/aendggner/Pipeline.java"
    },
    {
      "type": "modify",
      "old_id": "3ad0b8495370221e67f2b536cbee97d1d3ddfbbf",
      "old_mode": 33188,
      "old_path": "src/main/java/eu/mulk/aendggner/aenderung/parse/FontgroessenFilter.java",
      "new_id": "1a9c71787d7603c9c00d10968bc7be3537616ec5",
      "new_mode": 33188,
      "new_path": "src/main/java/eu/mulk/aendggner/aenderung/parse/FontgroessenFilter.java"
    },
    {
      "type": "modify",
      "old_id": "e7561260743c646d7470834f5f276148f77ec17d",
      "old_mode": 33188,
      "old_path": "src/main/java/eu/mulk/aendggner/aenderung/parse/PatchTextExtraktor.java",
      "new_id": "daa72c56fcbfac5fe4fa23f39e570dffeaf7c167",
      "new_mode": 33188,
      "new_path": "src/main/java/eu/mulk/aendggner/aenderung/parse/PatchTextExtraktor.java"
    },
    {
      "type": "modify",
      "old_id": "1e6c39a70f736d301ad93339464a9948a8e1c7b6",
      "old_mode": 33188,
      "old_path": "src/main/java/eu/mulk/aendggner/aenderung/parse/TextBereiniger.java",
      "new_id": "30cefdf08ed85ce8d6a7a5d6bdbbd88774723053",
      "new_mode": 33188,
      "new_path": "src/main/java/eu/mulk/aendggner/aenderung/parse/TextBereiniger.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "69084bcea7c442c9f9d53992e2a2f799e397e652",
      "new_mode": 33188,
      "new_path": "src/main/java/eu/mulk/aendggner/aenderung/parse/ZusammenstellungsLeser.java"
    },
    {
      "type": "modify",
      "old_id": "212e0707478088c2db914e5fd12202313d43e0dd",
      "old_mode": 33188,
      "old_path": "src/test/java/eu/mulk/aendggner/EndToEndTest.java",
      "new_id": "55579f15ceddeb4701b6d9a61a456e4b3e71136e",
      "new_mode": 33188,
      "new_path": "src/test/java/eu/mulk/aendggner/EndToEndTest.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8e994a69da3bae624084bd025b6d35adb10c0b56",
      "new_mode": 33188,
      "new_path": "src/test/java/eu/mulk/aendggner/aenderung/parse/ZusammenstellungsLeserTest.java"
    }
  ]
}
