| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Jede eigene Datei trug bislang den Vermerk "2020" — das Jahr, in dem das
Verzeichnis angelegt wurde. Von den neunundachtzig eigenen Dateien sind aber
vierundachtzig erst 2026 entstanden. Der Vermerk sagte damit nicht, wann das
Werk geschaffen wurde, sondern wann jemand zum ersten Mal etwas eincheckte; das
ist nicht dasselbe, und für die Schutzfristberechnung ist es die falsche Angabe.
Erhoben wird das Jahr nunmehr je Datei aus der Entstehungs- und der letzten
Änderungsbuchung. Neunundsiebzig Dateien tragen "2026". Fünf reichen wirklich bis
2020 zurück und werden bis heute fortgeschrieben (.gitignore, README.md, pom.xml,
AendGgner.java, logging.properties); sie tragen "2020-2026". Eine einzige Datei
ist seit 2020 unberührt geblieben, .mvn/maven.config, und behält ihren Vermerk
unverändert — sie war die einzige, bei der er von Anfang an stimmte.
Die Zuordnungsdatei wird entsprechend geschieden. Der Block, der maven.config mit
den drei übrigen kommentarlosen eigenen Dateien zusammenfasste, wird geteilt,
weil deren Jahre auseinanderfallen; die abgeleiteten Textfassungen und die
Herkunftsnachweise tragen 2026.
Damit der Bau die Berichtigung nicht sogleich wieder zunichte macht, tritt im
Kopfzeilenvordruck des Formatierers der Platzhalter "$YEAR" an die Stelle des
festen Jahres. Er nimmt hin, was in der Datei steht, statt allen Java-Dateien
dasselbe Jahr aufzunötigen.
Geprüft: 350 Tests, REUSE 188/188, spotless:check ohne Beanstandung und
spotless:apply ohne Änderung.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Change-Id: I876adf0a4ce63c198e0e549d7c976310e2a3a3ee
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Die Erste Landesverordnung zur Änderung der Ausbildungs- und Prüfungsordnung der
Unfallkasse (GVBl. 2026 Nr. 21) kommt als Erkennungsfall in den Bestand — nicht
als Akzeptanzfall, und der Grund liegt in der Quelle: Das rheinland-pfälzische
Landesrechtsportal führt keine früheren Gesamtausgaben, ebensowenig das
saarländische und das sachsen-anhaltische. Die Fassungsliste, über die Hessen,
Schleswig-Holstein, Berlin und Baden-Württemberg jede Fassung datierbar ausgeben,
gibt es dort nicht. Ohne Vorfassung kein Vergleich; der Stamm ist hier die
Nachfassung, und die neun „Zieltext nicht vorhanden“ sind gerade der Beleg dafür,
dass die Befehle dort bereits vollzogen sind.
Zwei allgemeine Funde hat der Fall trotzdem gebracht. Das Land schreibt „die
Worte“, wo das Handbuch der Rechtsförmlichkeit „die Wörter“ setzt — der Erkenner
nimmt die Nebenform jetzt überall an, ohne sie blieben sieben der 23 Befehle
unerkannt. Und der Seitenfuß des dortigen Gesetzblattes steht im Inhaltsstrom und
zerschneidet das Zitat einer Neufassung („§ 18 erhält folgende Fassung:“ /
Fußzeile / „„§ 18 …““); er wird nun herausgeschnitten wie die Füße der
Gesetzblätter Berlins, Thüringens und Baden-Württembergs.
Drei Idiome bleiben benannt offen: die Satzzeichen-Ersetzung im Verbund mit einer
Halbsatz-Anfügung („durch einen Strichpunkt ersetzt und folgender Halbsatz
angefügt“), „In der Einleitung“ als Ziel, und die Verweisung auf einen anderen
Punkt („entsprechend der vorstehenden Nummer 8 Buchst. a“).
Nebenbei ein besserer Beschaffungsweg, in RheinlandPfalz/SOURCES festgehalten:
Der Portaltext wird im Browser als Blob zum Herunterladen angeboten und landet
unmittelbar als Datei im Dateisystem, statt stückweise durch die Textausgabe der
Browsersteuerung zu gehen. Der PDF-Verweis der Dokumentansicht taugt dafür nicht
— er ist an die Sitzung gebunden.
Geprüft: 350 Tests, REUSE 188/188.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Change-Id: I317f2d368b734c1152cd47cc09356de60f5dfb35
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Brandenburg ist das erste Land, dessen Portal keine juris-Einseitenanwendung ist:
BRAVORS gibt seine Vorschriften als gewöhnliches HTML aus und führt unter
„Änderungshistorie“ jede Fassung einzeln. Vor- und Nachfassung entstammen damit
derselben Quelle — kein Wayback, keine Browsersteuerung, nur zwei Adressen. Die
Hefte lassen sich am Dokumententitel des PDF einordnen; „FraktG-1AendG“ verrät
mehr als jede Volltextsuche.
Der Belegfall ist das Erste Gesetz zur Änderung des Fraktionsgesetzes (GVBl. I
2026 Nr. 12): vier Befehle, vier angewandt, alle 24 Normen gleich der amtlichen
Nachfassung — auf Anhieb, ohne einen einzigen Eingriff am Parser. Zugleich ist er
die Gegenprobe zum Inkrafttreten: Artikel 2 ordnet es schlicht an („am Tag nach
der Verkündung“), also darf keine Staffelung gerügt und kein Datum erfunden
werden.
Drei Eigenheiten fürs Aufbereiten stehen in Brandenburg/SOURCES: Die
Abschnittsbezeichnung steht im Kopfelement vor der Überschrift; die Aufzählungen
sind echte Listen, deren Marken erst das Stilblatt erzeugt; und an ehemaligen
Trennstellen führt das Portal vereinzelt Steuerzeichen mit (U+0002 in
„Mitglie<STX>der“), die kein Textbestand sind.
Ein allgemeiner Fund kam doch dazu: Die Überschrift des Schlussartikels geriet in
den Wortlaut der Inkrafttretens-Anordnung, weil ein Artikel ohne Absatz-
bezeichnungen im ganzen ein Absatz ist. Auf das bloße Vorkommen von „tritt“ ist
dabei kein Verlass — das Wort „Inkrafttreten“ trägt es selbst.
Geprüft: 349 Tests, REUSE 185/185.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Change-Id: I17660864fdf589d280024c9ba310e23902781515
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Das Berliner Gesetz- und Verordnungsblatt zeichnet den ganzseitenbreiten
Titelblock des Gesetzes zuletzt — nach beiden Spalten, obgleich er über ihnen
steht. Im Inhaltsstrom stand er damit mitten in einem Zitat, das über den
Seitenwechsel läuft: „… zur Sicherung des Be-“, Titelblock, „triebs von
Unterkünften …“. Der Wortlaut der Anlage Nummer 31 trug den Titel des
Änderungsgesetzes in sich, und die Nummer wich als einzige aus einem Grunde von
der amtlichen Nachfassung ab, der weder in der Erkennung noch in der Anwendung lag.
Maßgeblich ist fortan das Satzbild in der einfachen Gestalt, die die
Gesetzblätter durchweg haben: zwei Spalten, dazwischen eine Rinne, und darüber
oder dazwischen einzelne ganzseitenbreite Zeilen. Gesucht wird die Rinne — die
senkrechte Linie, die möglichst wenige Zeilen überschreiten, die nahe der Mitte
des Satzspiegels liegt und zu deren beiden Seiten je eine Spalte von
nennenswerter Breite steht. Die wenigen Zeilen, die sie gleichwohl
überschreiten, sind die breiten; sie zerlegen die Seite in Bänder. Gelesen wird
Band für Band von oben nach unten, in jedem Band erst die linke, dann die rechte
Spalte.
Der übliche XY-Schnitt der Literatur leistet das nicht, und der erste Versuch
danach hat es bewiesen: Teilt man erst waagerecht am weitesten Weißraumband,
so zerfällt eine zweispaltige Seite mit Kolumnentitel in oben und unten, ehe sie
in links und rechts zerfällt; gelesen wird links oben, rechts oben, links unten,
rechts unten. Im Infektionsschutzgesetz zerriss das eine Aufzählung mitten
entzwei und ließ von fünfundsiebzig Befehlen einundvierzig übrig. Die Spalte hat
deshalb den Vorrang vor dem Band.
Zwei Vorsichtsmaßregeln begrenzen den Eingriff, der sonst jeden Extraktionslauf
berührte: Innerhalb einer Spalte bleibt es bei der Reihenfolge des
Inhaltsstroms, und findet sich keine Rinne, so bleibt die Seite unangetastet.
Der Eingriff kann Spalten und breite Zeilen gegeneinander versetzen, niemals
aber den Satz einer Spalte durcheinanderbringen, deren Strom schon stimmte.
Ausgezählt über den ganzen Beispielbestand ändern fünfzehn der fünfundvierzig
PDF-Dateien ihren Auszug; nachgesehen sind sie sämtlich, und wo sie den
Fließtext betreffen, rücken sie einen Vorspann an die Stelle, an der er im Satz
steht (Berlin, Thüringen, die Beispielsynopse zum Produkthaftungsrecht). Die
Anlage Nummer 31 gleicht nunmehr der amtlichen Nachfassung; es verbleiben zwei
benannte Abweichungen, keine davon in der Anwendung begründet. Alle
dreihundertneununddreißig Prüfungen laufen durch, darunter jede gepinnte Zahl
des Bestandes; REUSE meldet 176/176.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Change-Id: I80f100bba2b8e48d0d292fb310f4a9c98fc519ec
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Baden-Württemberg war das letzte Land mit einem Änderungsdokument, aber ohne
Belegfall. Es hat vier Funde des Satzbildes und einen der Anwendung gebracht.
Der Seitenfuß des Gesetzblatts steht im Inhaltsstrom mitten im Befehlstext und
trennt dort den Zieltext eines Befehls von seinem Verb — „… die Wörter
‚Telegramm, Fernschreiben,‘“, Fußzeile, „gestrichen.“; die Blattzählung steht
mitunter für sich allein zwischen zwei Gliederungspunkten. Beides wird nun
herausgeschnitten. Dazu zwei Idiome: Der Dativ einer Anfügung darf seinen
Artikel verlieren („Absatz 2 wird folgender Satz angefügt“), und hinter einer
Anlagenbezeichnung darf ein beschreibender Klammerzusatz stehen.
Der Anwendungsfund betrifft den Halbsatz: Wird der zweite gestrichen, so nimmt
er sein Semikolon mit, und der Satz behält seinen Schlusspunkt. „A; B.“ ohne B
ist „A.“ und nicht „A;“.
Bei der Gelegenheit fiel eine Ordnungsfrage auf, die allgemein ist: Die Glieder
einer Fundstelle werden jetzt in der Reihenfolge aufgelöst, in der die Stelle
sie nennt, und jedes verengt den Suchbereich des nächsten. „Absatz 2 Nummer 1
Satz 2“ meint den zweiten Satz der Nummer 1, „Satz 1 Nummer 3“ dagegen die
dritte Nummer des ersten Satzes; wer stets zuerst den Satz oder stets zuerst die
Nummer suchte, träfe in einem der beiden Fälle die falsche Einheit.
Einunddreißig der siebenunddreißig Befehle werden angewandt, und einundneunzig
der dreiundneunzig Normen gleichen danach der amtlichen Fassung. Die sechs
liegengebliebenen ändern sämtlich die Muster der Anlagen — den Wahlschein, die
Merkblätter, deren Fußnoten und Spiegelstriche. Sie sind nicht anwendbar, weil
das Landesrechtsportal die Muster nicht als Text ausliefert: Die Anlagen 2 bis 14
bestehen dort nur aus Kopf und Fundstelle. Das ist eine Grenze der Quelle, nicht
des Werkzeugs, und sie ist als solche benannt.
Damit trägt jedes Land, von dem ein Änderungsdokument vorliegt, einen Belegfall
bis zur Anwendung.
Geprüft mit „mvnw verify“: 334 Prüfungen, kein Fehlschlag; keine gepinnte Zahl
eines anderen Belegfalls hat sich geändert. REUSE 174/174.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Change-Id: If1709f0c037195a510febb7f8a21396ed0133d45
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Der Zuständigkeitskatalog des Berliner Sicherheits- und Ordnungsgesetzes zählt
seine Einheiten nicht als Aufzählungsglieder, sondern führt sie als „Nummer 6“,
„Nummer 23“, „Nummer 31“ — jede mit eigener Absatzzählung, jede im Portal eine
eigene Einzelnorm. Der Stellenauflöser suchte dagegen eine Marke „6.“ im
Wortlaut der Anlage und fand dort vielerlei; von sechs Befehlen des Artikels 1
wurden zwei angewandt.
Sie werden nunmehr geführt, wie sie sind: als eigene Normen, deren Bezeichnung
die Anlage voranstellt. Damit trägt die vorhandene Absatz-Maschinerie ihre
Befehle unverändert, und es braucht keinen neuen Rang im Modell. Wo ein Gesetz
solche Normen nicht führt — im gii-XML des Bundes stehen die Nummern einer
Anlage als Marken im Wortlaut —, bleibt es beim bisherigen Weg.
Dabei kamen drei Mängel ans Licht. Ob die feinste Komponente einer Fundstelle
ein Absatz ist, entschied das bloße Vorkommen einer feineren Komponente; die
Nummer einer Anlage steht aber vor der Absatzangabe und gehört zur Bezeichnung
der Norm. Die Umnummerierung eines solchen Absatzes galt deshalb als die einer
Aufzählungseinheit, tauschte eine Marke, die es nicht gab, hieß angewandt und
bewirkte nichts. Ein Absatz, der „vor den Wörtern …“ eingefügt wird, wurde eine
Zeile im Nachbarabsatz statt eines Absatzes. Und die Bezeichnung eines so
eingefügten Absatzes verlor die Nummer der Anlage, weshalb die Schritt-Ordnung
nicht sah, dass eine Umnummerierung ihm den Platz erst räumt.
Beigelegt sind die beiden Fassungen des ASOG, über die Browsersteuerung
beschafft. Der Auszug ist dort bei fünfzigtausend Zeichen gekappt und verschluckt
einzelne Leerzeichen; base64-kodierte Stücke kamen zeichengenau herüber.
Fünf der sechs Befehle werden angewandt, und 168 der 171 Normen gleichen danach
der amtlichen Nachfassung. Die drei Abweichungen sind benannt und liegen nicht
in der Anwendung — eine von ihnen belegt erstmals, was die geometrische
Lesereihenfolge kosten würde: Der Titelblock des Änderungsgesetzes steht im
Inhaltsstrom mitten in einem Zitat.
Geprüft mit „mvnw verify“: 333 Prüfungen, kein Fehlschlag; keine gepinnte Zahl
eines anderen Belegfalls hat sich geändert. REUSE 171/171.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Change-Id: I24b94cb96e6728b1ff1b1fcb5bb4b8433594e240
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Der Klartext-Parser trägt fortan Anlagen: „Anlage“, „Anlage 2“ und „Anhang“
eröffnen eine eigene Norm, deren Bezeichnung genau so lautet wie im gii-XML, und
vom ersten Anlagenkopf an gehört alles Folgende zu ihr — ihre inneren
Überschriften gliedern nicht mehr das Gesetz, und ein Paragraph, den sie
zitieren, eröffnet keine Norm.
Berlin ist damit zur Hälfte belegt. Artikel 2 des Änderungsgesetzes schreibt das
LAF-Errichtungsgesetz vollständig fort; alle fünf Normen gleichen danach der
amtlichen Fassung vom 12. Juni 2026. Artikel 1 bleibt bei der Erkennung, und der
Grund ist benannt statt umgangen: Fünf seiner sechs Befehle zielen auf Einheiten
der Anlage, die dort als Überschriften stehen — „Nummer 6“, „Nummer 23“,
„Nummer 31“ —, während der Stellenauflöser eine Aufzählungsmarke „6.“ sucht, die
im Text der Anlage vielfach vorkommt. Die Gegenprobe belegt es: Werden die
Überschriften versuchsweise in Marken umgeschrieben, steigt die Zahl der
angewandten Befehle von zwei auf drei, mehrdeutig bleibt der Rest. Die Nummern
einer Anlage brauchen einen eigenen Rang zwischen Norm und Absatz.
Solange er fehlt, bringt die Beilage von zweimal 380 kB Stammfassung keinen
Prüfgewinn; ihr Bezugsweg steht in „Berlin/SOURCES“ und führt in zwei Abrufen
wieder dorthin. Dort ist auch der zweite Berliner Befund festgehalten: Das Portal
setzt die amtlichen Satznummern als angeklebte Ziffern statt als Superskripte.
Geprüft durch „mvnw verify“: 328 Tests, keine bestehende gepinnte Zahl bewegt,
REUSE-Konformität 165 von 165.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Change-Id: Ifdda599a8c641ce66d0370b2a027f556adb4d86d
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Schleswig-Holstein ändert mit einem Gesetz die Gemeindeordnung und die
Kreisordnung zugleich, jede in ihrem eigenen Artikel. Beide Stammfassungen sind
nun über die Browsersteuerung beschafft — Vor- wie Nachfassung —, und beide
werden vollständig fortgeschrieben: je ein Neufassungsbefehl, kein Rest, und
danach gleicht die Gemeindeordnung in allen 167, die Kreisordnung in allen 86
Normen der amtlichen Fassung vom 31. März 2026. Der dritte Artikel ändert ein
anderes Änderungsgesetz und bleibt zu Recht unbeachtet.
Der Portalsatz hat zwei Eigenheiten. Er trennt die Sachnummer ab („§ 57 c“
statt „§ 57c“); zusammengezogen gehört das zur Aufbereitung, ohne den Handgriff
wären zehn Paragraphen der Gemeindeordnung dem Gesetz entgangen. Und er setzt im
Klammerzusatz „(Gemeindeordnung - GO -)“ einen Bindestrich, wo das Gesetzblatt
einen Gedankenstrich führt. Daran scheiterte die Trennung von Kurztitel und
Abkürzung, der Einleitungssatz fand sein Ziel nicht, und es wurde kein Artikel
gewählt. Der Parser nimmt den Strich fortan in beiden Gestalten an, sofern
Leerraum ihn umgibt — innerhalb eines Namens steht ein Bindestrich stets ohne.
Geprüft durch „mvnw verify“: 327 Tests, keine bestehende gepinnte Zahl bewegt,
REUSE-Konformität 162 von 162.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Change-Id: I11e8e84436c9b4b0e1729f5e4be012cc35335a0c
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Die Landesrechtsportale, die auf der juris-Anwendung beruhen, galten als
Sackgasse: Jede Skriptabfrage erhält nur ihre leere Anwendungshülle, gleich
unter welcher Adresse. Sie geben ihren Wortlaut aber jedem Browser, und über
eine Browsersteuerung ist er Werk für Werk auszulesen. Damit ist die hessische
Verkehrsrechts-Zuständigkeitsverordnung in beiden maßgeblichen Fassungen
beschafft — der vom 1. Januar 2026 und der vom 4. Februar 2026 — und Hessen ist
kein bloßer Erkennungsfall mehr, sondern ein voller Belegfall: einundzwanzig
Befehle, kein Rest, und alle zweiundfünfzig Normen gleichen zeichengenau der
amtlichen Nachfassung.
Der Weg dorthin hat fünf allgemeine Lücken aufgedeckt. Der Klartext-Parser
verlangte für jeden Normkopf eine Überschrift, die eine Verordnung nicht führt,
und kannte die ausgeschriebene Gliederung nicht („Erster Teil“); ein
Aufzählungsglied, das auf „und“ endet, galt ihm als Unter-Überschrift. Der
Anwender behandelte die Streichung einer Absatzbezeichnung wie die Aufhebung des
Absatzes, setzte Platzhalter auch dort, wo kein Platz zu halten war, und ließ
ein Wort, das an die Stelle eines Satzzeichens tritt, am Vorwort kleben.
Zwei stille Mängel kamen unverhofft mit: „List.remove“ war zweimal ein geboxter
Index übergeben, sodass der Aufruf an die suchende Überladung band, nichts fand
und nichts meldete. Betroffen war neben der Aufhebung eines Absatzes auch dessen
Neufassung durch mehrere — der alte Absatz blieb neben den neuen stehen.
Geprüft durch „mvnw verify“: 327 Tests, keine bestehende gepinnte Zahl bewegt,
REUSE-Konformität 157 von 157.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Change-Id: I20ac8a7bc66357cd66daa167184b06b8c419f843
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Das Erzeugnis steht seit seinem ersten Tage unter der GNU Affero General Public
License. Ausgesprochen war das indes nur an drei verstreuten Stellen: im
Lizenzvolltext „COPYING“, in einem Satz des Impressums und in einer Bemerkung der
Datei „.gitattributes“. Keine einzige Quelldatei nannte ihren Urheber oder ihre
Lizenz. Wer eine Datei für sich betrachtet — und so betrachtet sie jeder, der sie
übernimmt —, fand daran nichts.
Maßstab ist die REUSE-Spezifikation in der Fassung 3.3. Das Verzeichnis
„LICENSES“ nimmt die Wortlaute auf: die AGPL in der Fassung 3 oder später, die
Apache-Lizenz für den unverändert mitgelieferten Maven-Wrapper und
„LicenseRef-AmtlichesWerk.txt“. „COPYING“ bleibt an seiner Stelle, tritt aber als
symbolische Verknüpfung auf; der gewohnte Pfad trägt damit fort, ohne dass zwei
Wortlaute nebeneinander zu pflegen wären, und die Prüfung übergeht Verknüpfungen,
sodass für den Lizenztext selbst keine sachfremde Lizenzangabe zu erfinden war.
Die dritte Datei bezeichnet keine erteilte Lizenz, sondern hält die gesetzliche
Rechtslage des Prüfbestandes fest. Fünfundvierzig PDF-Dateien, fünf EPUB-Dateien
und die XML-Fassungen sind fremde Werke: Verkündungsblätter, Drucksachen,
Plenarprotokolle und Entwürfe des Bundes und der Länder. Sie sind nach § 5 Abs. 1
UrhG gemeinfrei, die ministeriellen Entwürfe und Synopsen nach § 5 Abs. 2, und
gleichwohl gebunden an Änderungsverbot und Quellenangabe nach §§ 62 und 63.
Ausdrücklich festgehalten ist, dass die technische Aufbereitung durch die
Rechtsportale kein eigenes Recht am Text begründet und dass der Bestand kein
„Corresponding Source“ im Sinne der AGPL ist — gebaut wird ohne ihn.
„REUSE.toml“ ordnet zu, was keinen Kommentar verträgt, und scheidet den
Prüfbestand nach Herkunft: Bund in Verkündung und Parlament, Bund in den
ministeriellen Entwürfen, gesetze-im-internet.de nebst der Aufbereitung durch die
juris GmbH, sodann neun Länder je einzeln. Die selbst abgeleiteten Textfassungen
tragen „AGPL-3.0-or-later AND LicenseRef-AmtlichesWerk“, denn der Wortlaut ist
amtlich, die Aufbereitung — Einrückung, Superskript-Satznummern,
Gliederungsüberschriften — eigene Arbeit. Maßgeblich für die Fundstelle der
einzelnen Datei bleibt die Datei „SOURCES“ des jeweiligen Verzeichnisses; die
Lizenzdatei nimmt sie in Bezug, wie es § 63 UrhG verlangt.
Die übrigen Dateien tragen ihre Angabe in sich, im jeweils üblichen
Kommentarstil, vor dem vorhandenen erläuternden Text und ohne diesen anzutasten.
„mini-gii.xml“ und „.mvn/maven.config“ bleiben bewusst unberührt und erhalten
stattdessen einen Eintrag: Ersteres liest der GiiXmlLoader, Letzteres Maven vor
jedem Bau. Ein Ausrollwerkzeug hinterließ mit „.wrangler“ ein Zwischenverzeichnis
im Arbeitsbaum; es ist fortan übergangen.
Die Java-Dateien und die Angleichung der Lizenzaussage folgen gesondert. An
diesem Stand bestehen dreihundertfünfundzwanzig Testfälle unverändert; am
Verhalten des Erzeugnisses ändert sich nichts.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Change-Id: Id08e26d8e15545b2d00dd3d4fa7ffca86cf14944
|
|
|
Die Browserfassung soll künftig über Cloudflare Workers gehen, und dort gilt
eine Grenze von 25 MiB je Datei, unkomprimiert gemessen. Zwei der
ausgelieferten Dateien standen dem entgegen: Das Quelltextarchiv maß 29,7 MB
und war damit schon nicht mehr hochzuladen, das Wasm-Modul mit 24,5 MB zu
achtundneunzig Hundertsteln der Grenze und ohne jeden Spielraum.
Das Archiv war ein ungefiltertes „git archive“ des Repositoriums, und über
fünfundneunzig Hundertstel davon waren die Beispiel-PDFs. Der Quelltext selbst
misst keine dreihunderttausend Zeichen. Die Gesetzes- und Drucksachentexte sind
fremde Werke, an denen allein die Tests messen; sie sind nicht der Quelltext,
aus dem sich das Ausgelieferte herstellen ließe, und die Auflage des AGPLv3 § 13
verlangt sie deshalb nicht. Sie sind aus dem Archiv genommen, und
„quelltext-fassung.txt“ sagt fortan, dass sie fehlen, warum sie fehlen und wo
sie vollständig liegen. Damit dies nicht stillschweigend zurückfällt, bricht
„webpaket.sh“ ab, sobald das Archiv acht Mebibyte überschreitet, und ebenso,
wenn irgendeine ausgelieferte Datei die Grenze der Zielplattform reißt: Lieber
hier auffallen als beim Hochladen.
Der Korpus lag überdies unter „src/main/resources“ und wanderte deshalb in
jedes Erzeugnis: in das Klassenverzeichnis, in die ausführbare Archivdatei —
achtundzwanzig Megabyte für ein Werk von sechshundert Kilobyte Java — und auf
den Klassenpfad des Übersetzers, dessen Ressourcentabelle die Verzeichnisnamen
bis ins Wasm trug. Er liegt nunmehr unter „src/test/resources“, wo er hingehört,
und ist von der Kopie nach „target/test-classes“ ausgenommen: Die Tests lesen
ihn über Dateisystempfade, eine Kopie wäre bei jedem Bau fünfunddreißig
Megabyte umsonst.
Das Modul wiegt statt 24,5 nunmehr 17,2 Megabyte; komprimiert geht es mit 5,5
statt 7,1 Megabyte über die Leitung. Vier Ursachen liegen dem zugrunde. Der
Picocli-Annotationsprozessor meldete die Befehlszeilenklasse mit sämtlichen
Methoden zur Reflexion an, worauf die Erreichbarkeitsanalyse die ganze
Befehlszeilenfassung samt Dateizugriffen in ein Bild zog, in dem es keine
Befehlszeile gibt; im Profil „wasm“ läuft er nicht mehr, und eine von einem
früheren Lauf liegengebliebene Konfiguration wird vor dem Übersetzen entfernt,
damit die Größe nicht davon abhängt, was vorher lief. Der Ressourcen-Glob
„org/apache/fontbox/**“ bettete 3,3 Megabyte ostasiatischer CMaps, die
Schrifttabelle „Scripts.txt“ und — weil zwei Sterne auch Klassendateien treffen
— 0,7 Megabyte „.class“-Dateien ein, von denen ein deutsches Gesetzes-PDF nichts
braucht; geblieben sind die beiden Identity-CMaps. Die Metriken unter
„org/apache/pdfbox/resources“ bleiben vollständig, denn an ihnen hängt die
Breitenberechnung bei nicht eingebetteten Schriften. Übersetzt wird mit „-Os“,
und den Rest holt „wasm-opt -Oz“ im Webpaket.
Dessen Merkmale sind einzeln aufgezählt und nicht als „--all-features“ erteilt.
Der bequeme Weg war gangbar und führte doch ins Leere: Binaryen nutzte
daraufhin Vorschläge, die noch kein Browser annimmt, und das Modul scheiterte
erst beim Instanziieren — erst an einem exakten Heap-Typ aus den „custom
descriptors“, nach dessen Abschaltung an der kompakten Importsektion. Zugelassen
ist nunmehr, was ausgeliefert in den Browsern steht und was Web Image braucht.
Die Vorkompression nach „.gz“ und „.br“ entfällt als Regelfall, denn Cloudflare
komprimiert selbst und jede Beilage wäre dort eine weitere Datei; wer mit nginx
selbst ausliefert, fordert sie mit VORKOMPRIMIEREN=1 an. Das
Auslieferungsverzeichnis fällt damit von achtundsechzig auf siebzehn Megabyte,
und ein liegengebliebenes „.DS_Store“ geht nicht mehr mit hoch.
Dreihundertfünfundzwanzig Testfälle bestehen. Das Modul ist im Browser
gelaufen: Vier Dokumentenpaare — IfSG, UWG, AGG und das Bayerische Jagdgesetz,
also gii-XML wie PDF als Stammfassung, Bundesgesetzblatt, Drucksache und
Gesetz- und Verordnungsblatt als Änderungsdokument — ergeben Synopsen, deren
SHA-256-Summen denen der Befehlszeilenfassung gleichen. Der Ressourcenbeschnitt
kostet also keine Zeichen.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Change-Id: I31a47d1dcf3b27ffa4ae891947b1c4e083107a71
|