Der Vordruck nennt seinen Stand und eine zweite Bezugsquelle
Die Fußzeile der Startseite und der Hinweis im Impressum verwiesen allein auf die
eigene Git-Stelle; neben sie tritt nun das Spiegelbild auf GitHub. Unter dem Titel
des Vordrucks steht fortan „in der Fassung vom …“ nebst einem <time>-Element, dazu
im Stilblatt die Regel „.fassung“ nach dem Vorbild von „.stelle“.
Das Datum setzt das Paketierskript beim Bau ein, damit die Angabe nicht
stillschweigend veraltet: aus „git log -1 --format=%cs“, ohne date(1) in die
deutsche Langform gebracht (Parameterexpansion und Fallunterscheidung, weil BSD und
GNU sich über die Schalter nicht einig sind), geschrieben in eine Nebendatei und
umbenannt statt „sed -i“. Fehlt die Marke, bricht der Bau ab; eine falsch datierte
Fassung wäre schlimmer als ein fehlgeschlagener Bau. Der Fassungsnachweis im Paket
führt das Datum künftig neben dem Commit. Das im Quelltext stehende Datum bleibt
der Rückfall für den Blick auf die Seiten ohne Paketierlauf.
Die Prüfung geht auf: „sh -n“ beanstandet nichts; ein Trockenlauf auf einer Kopie
der Seiten setzt „28. August 2026“ ein, was dem Stand von HEAD entspricht; wird die
Marke entfernt, bricht das Skript mit der vorgesehenen Meldung ab; „reuse lint“
weist 214 von 214 Dateien als vollständig ausgezeichnet aus.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Change-Id: I3e7a303cba8f9a213dcd19e809a542b7fe8c1426
diff --git a/FASSUNGEN.txt b/FASSUNGEN.txt
index cf1e6e6..e0ddd95 100644
--- a/FASSUNGEN.txt
+++ b/FASSUNGEN.txt
@@ -21,6 +21,78 @@
════════════════════════════════════════════════════════════════════════════════
+ Fassung vom 29. August 2026,
+ zuletzt geändert durch die am 29. August 2026 vorgenommenen Änderungen
+════════════════════════════════════════════════════════════════════════════════
+
+Der Vordruck weist fortan aus, welchen Standes er ist, und nennt neben der
+bisherigen Bezugsquelle eine zweite. Beides betrifft allein die statischen Seiten
+der Browserfassung; an der Auswertung ändert sich nichts.
+
+
+Artikel 1
+Zweite Bezugsquelle des Quelltextes
+
+Die Fußzeile der Startseite und der Hinweis im Impressum verwiesen bislang allein
+auf die eigene Git-Stelle. Das Spiegelbild auf GitHub ist dem allgemeinen Publikum
+geläufiger und tritt neben sie.
+
+(1) In der Fußzeile der Startseite (index.html) folgt dem Git-Link, durch einen
+ Mittelpunkt getrennt, ein Link auf https://github.com/benkard/aendggner.
+
+(2) Im Impressum wird der Satz über den fortlaufenden Bezug entsprechend erweitert
+ („über Git oder GitHub“).
+
+(3) Die Datenschutzseite bleibt unberührt; sie führte keine solche Angabe.
+
+
+Artikel 2
+Die Startseite nennt ihren Stand
+
+Unter dem Titel des Vordrucks stand bisher nur die Bezeichnung der Stelle; welchen
+Standes die betriebene Fassung ist, war der Seite nicht zu entnehmen. Die
+handgeführte Ausgabebezeichnung in der Fußzeile („08.26“) trifft dazu keine
+tagesgenaue Aussage.
+
+(1) Zwischen Überschrift und Stellenangabe tritt die Zeile „in der Fassung vom …“
+ nebst einem <time>-Element, das das Datum sowohl maschinenlesbar als auch im
+ deutschen Fließtext führt. Das Stilblatt erhält dazu die Regel „.fassung“ nach
+ dem Vorbild von „.stelle“.
+
+(2) Das im Quelltext stehende Datum ist der Rückfall für den Fall, daß die Seite
+ ohne das Paketierskript angesehen wird; ausgeliefert wird stets das Datum des
+ gebauten Standes.
+
+
+Artikel 3
+Einsetzen des Datums beim Paketieren
+
+Damit die Angabe nicht stillschweigend veraltet, setzt sie das Paketierskript
+(deploy/webpaket.sh) beim Bau ein. Es läuft ohnehin nach dem Kopieren der
+statischen Seiten und kennt den gebauten Stand bereits.
+
+(1) Als vierter Schritt tritt das Fassungsdatum hinzu. Es stammt aus „git log -1
+ --format=%cs“ und wird ohne date(1) in die deutsche Langform gebracht: Jahr,
+ Monat und Tag werden durch Parameterexpansion zerlegt, der Monatsname über eine
+ Fallunterscheidung gewonnen, die führende Null des Tages gestrichen. Grund ist
+ die Uneinigkeit von BSD und GNU über die Schalter von date(1).
+
+(2) Ersetzt wird die gesamte <time>-Einheit; geschrieben wird in eine Nebendatei
+ und sodann umbenannt, weil „sed -i“ nicht überall gleich lautet.
+
+(3) Findet sich die Marke nicht, bricht der Bau ab. Eine falsch datierte Fassung
+ auszuliefern wäre schlimmer als ein fehlgeschlagener Bau.
+
+(4) Der Fassungsnachweis im Paket (quelltext-fassung.txt) führt das Datum künftig
+ neben dem Commit.
+
+Die Prüfung geht auf: „sh -n“ beanstandet nichts; ein Trockenlauf auf einer Kopie
+der Seiten setzt „28. August 2026“ ein, was dem Stand von HEAD entspricht; wird die
+Marke entfernt, bricht das Skript mit der vorgesehenen Meldung ab (Rückgabe 1);
+„reuse lint“ weist 214 von 214 Dateien als vollständig ausgezeichnet aus.
+
+
+════════════════════════════════════════════════════════════════════════════════
Fassung vom 28. August 2026 (dritte Fassung des Tages),
zuletzt geändert durch die am 28. August 2026 vorgenommenen Änderungen
════════════════════════════════════════════════════════════════════════════════
diff --git a/deploy/webpaket.sh b/deploy/webpaket.sh
index 1bbc474..ba47ea5 100755
--- a/deploy/webpaket.sh
+++ b/deploy/webpaket.sh
@@ -10,9 +10,10 @@
# 3. Der Quelltext der gebauten Fassung wird als Tarball beigelegt — AGPLv3 §13 verlangt
# beim Netzwerkbetrieb einen Quellcode-Zugang für die Nutzer:innen, und der Footer der
# Startseite verweist darauf.
-# 4. Nur die vom Bau erzeugten Dateien bleiben stehen; alles hier Liegende wird
+# 4. Die Startseite bekommt unter dem Titel das Datum des gebauten Commits.
+# 5. Nur die vom Bau erzeugten Dateien bleiben stehen; alles hier Liegende wird
# hochgeladen.
-# 5. Auf Wunsch (VORKOMPRIMIEREN=1) werden die großen Dateien vorkomprimiert.
+# 6. Auf Wunsch (VORKOMPRIMIEREN=1) werden die großen Dateien vorkomprimiert.
#
# Zielplattform ist Cloudflare Workers: dort gilt eine Grenze von 25 MiB je Datei
# (unkomprimiert), und komprimiert wird beim Ausliefern ohnehin. Deshalb ist die
@@ -110,6 +111,7 @@
echo "ÄndGgner — Quelltext der ausgelieferten Fassung"
echo
echo "Commit: $fassung"
+ echo "Fassung: $(git -C "$quelle" log -1 --format=%cs HEAD)"
echo "Gebaut: $(date -u '+%Y-%m-%dT%H:%M:%SZ')"
echo
echo "Vollständig in aendggner-quelltext.tar.gz; Bauanleitung darin in README.md."
@@ -121,10 +123,54 @@
echo "Repository von der oben genannten Adresse, wo der Korpus vollständig liegt."
} > "$ziel/quelltext-fassung.txt"
-# 4. Nur das Gebaute bleibt liegen — was hier steht, geht hoch.
+# 4. Fassungsdatum der Startseite.
+#
+# Unter dem Titel steht „in der Fassung vom …“. Im Quelltext trägt die Marke das Datum des
+# letzten Handanlegens; ausgeliefert wird das Datum des gebauten Commits, damit die Angabe
+# nicht stillschweigend veraltet. Das Datum kommt aus %cs (JJJJ-MM-TT); date(1) bleibt
+# außen vor, weil BSD und GNU sich über die Schalter nicht einig sind.
+fassungsdatum="$(git -C "$quelle" log -1 --format=%cs HEAD)"
+jahr="${fassungsdatum%%-*}"
+rest="${fassungsdatum#*-}"
+monat="${rest%%-*}"
+tag="${rest#*-}"
+
+case "$monat" in
+ 01) monatsname="Januar" ;; 02) monatsname="Februar" ;; 03) monatsname="März" ;;
+ 04) monatsname="April" ;; 05) monatsname="Mai" ;; 06) monatsname="Juni" ;;
+ 07) monatsname="Juli" ;; 08) monatsname="August" ;; 09) monatsname="September" ;;
+ 10) monatsname="Oktober" ;; 11) monatsname="November" ;; 12) monatsname="Dezember" ;;
+ *) echo "webpaket: unlesbares Commit-Datum „$fassungsdatum“." >&2; exit 1 ;;
+esac
+
+# Führende Null im Tag ist im deutschen Fließtext unüblich.
+tag="${tag#0}"
+fassungstext="$tag. $monatsname $jahr"
+
+startseite="$ziel/index.html"
+if [ ! -f "$startseite" ]; then
+ echo "webpaket: $startseite fehlt — die statischen Seiten sind nicht mitkopiert." >&2
+ exit 1
+fi
+
+sed -e "s|<time datetime=\"[0-9-]*\">[^<]*</time>|<time datetime=\"$fassungsdatum\">$fassungstext</time>|" \
+ "$startseite" > "$startseite.neu"
+
+# Greift die Ersetzung nicht, ist die Marke im Vordruck umgebaut worden. Dann lieber der
+# Bau ab als eine falsch datierte Fassung.
+if ! grep -q "<time datetime=\"$fassungsdatum\">$fassungstext</time>" "$startseite.neu"; then
+ rm -f "$startseite.neu"
+ echo "webpaket: In index.html ist keine <time>-Marke unter dem Titel zu finden; das" >&2
+ echo " Fassungsdatum lässt sich nicht einsetzen." >&2
+ exit 1
+fi
+mv "$startseite.neu" "$startseite"
+echo "webpaket: Startseite trägt die Fassung vom $fassungstext."
+
+# 5. Nur das Gebaute bleibt liegen — was hier steht, geht hoch.
rm -f "$ziel/.DS_Store"
-# 5. Vorkompression, nur auf Anforderung (siehe Kopf). Der Tarball ist bereits gepackt und
+# 6. Vorkompression, nur auf Anforderung (siehe Kopf). Der Tarball ist bereits gepackt und
# bleibt außen vor.
if [ "${VORKOMPRIMIEREN:-}" = 1 ]; then
for datei in "$ziel"/*.wasm "$ziel"/*.js "$ziel"/*.css "$ziel"/*.html "$ziel"/*.svg \
diff --git a/src/main/resources/eu/mulk/aendggner/web/impressum.html b/src/main/resources/eu/mulk/aendggner/web/impressum.html
index 0bac37c..ab45d94 100644
--- a/src/main/resources/eu/mulk/aendggner/web/impressum.html
+++ b/src/main/resources/eu/mulk/aendggner/web/impressum.html
@@ -61,7 +61,8 @@
Gewährleistung überlassen. Den
<a href="aendggner-quelltext.tar.gz">Quelltext der betriebenen Fassung</a> gibt es zum
Herunterladen; fortlaufend auch über
- <a href="https://git.benkard.de/mulk/aendggner">Git</a>.
+ <a href="https://git.benkard.de/mulk/aendggner">Git</a> oder
+ <a href="https://github.com/benkard/aendggner">GitHub</a>.
</p>
</main>
<footer>
diff --git a/src/main/resources/eu/mulk/aendggner/web/index.html b/src/main/resources/eu/mulk/aendggner/web/index.html
index 40d93bb..40a6649 100644
--- a/src/main/resources/eu/mulk/aendggner/web/index.html
+++ b/src/main/resources/eu/mulk/aendggner/web/index.html
@@ -20,6 +20,8 @@
<header>
<h1>Antrag auf Erstellung einer Synopse<br>
zu einem Stammgesetz nach Maßgabe eines oder mehrerer Änderungsdokumente</h1>
+ <p class="fassung">in der Fassung vom
+ <time datetime="2026-08-29">29. August 2026</time></p>
<p class="stelle">
ÄndGgner — nichtamtliche Zentralstelle für die maschinelle Fortschreibung von Stammgesetzen
anhand von Änderungsvorschriften des Bundes und der Länder
@@ -218,7 +220,8 @@
<a href="impressum.html">Impressum</a> ·
<a href="datenschutz.html">Datenschutz</a> ·
<a href="aendggner-quelltext.tar.gz">Quelltext dieser Fassung (AGPLv3 oder später)</a> ·
- <a href="https://git.benkard.de/mulk/aendggner">Git</a>
+ <a href="https://git.benkard.de/mulk/aendggner">Git</a> ·
+ <a href="https://github.com/benkard/aendggner">GitHub</a>
</nav>
<span class="ausgabe">08.26</span>
</footer>
diff --git a/src/main/resources/eu/mulk/aendggner/web/style.css b/src/main/resources/eu/mulk/aendggner/web/style.css
index ce64a6f..5846e9c 100644
--- a/src/main/resources/eu/mulk/aendggner/web/style.css
+++ b/src/main/resources/eu/mulk/aendggner/web/style.css
@@ -80,6 +80,13 @@
line-height: 1.35;
}
+/* Die Fassungsangabe unter dem Titel; das Datum setzt deploy/webpaket.sh beim Bau ein. */
+.fassung {
+ margin: 0 0 0.5rem;
+ font-size: 0.6875rem;
+ color: var(--muted);
+}
+
.stelle {
margin: 0 0 0.9rem;
font-size: 0.6875rem;