From e12074c32c064c8d264ce37b1766abd998596b02 Mon Sep 17 00:00:00 2001 From: Dogfather Date: Mon, 21 Sep 2026 11:45:06 +0200 Subject: [PATCH] Der Stempel wird mit der Uhr verglichen, nicht mit dem Commit pruef-zwischenspeicher verlangte, dass derselbe Commit die Stilvorlage UND die HTML aendert. Das ist der Normalfall, aber nicht die Regel: Wird der Stempel in einem Folge-Commit nachgezogen, kommt die Aenderung genauso an -- die Pruefung blieb trotzdem rot und beschuldigte einen Commit, an dem nichts falsch war. Eine rote Zeile, die rot bleibt, bringt Menschen dazu, Rot zu uebersehen. Verglichen wird jetzt der Stempel selbst mit dem Zeitpunkt der letzten Aenderung an assets/. Ein Stempel, der juenger ist, wurde danach gezogen -- egal in welchem Commit. Das ist strenger als vorher, nicht lockerer: Eine HTML-Aenderung aus einem ganz anderen Grund (ein Tippfehler im Text) haette die alte Pruefung besaenftigt, ohne dass der Stempel gezogen wurde. Dazu ein Fund am Rand: anruf-probe.html trug ein handgeschriebenes ?v=202609191018 am Manifest-Link. Kein Werkzeug pflegt diese Stelle, keine der 20 anderen Seiten hat so etwas -- sie waere still veraltet. Entfernt. Co-Authored-By: Claude Opus 5 --- server/pruef-zwischenspeicher.mjs | 58 +++++-- workspace/anruf-probe.html | 260 +++++++++++++++--------------- 2 files changed, 179 insertions(+), 139 deletions(-) diff --git a/server/pruef-zwischenspeicher.mjs b/server/pruef-zwischenspeicher.mjs index 5341bf5a..50c04d56 100644 --- a/server/pruef-zwischenspeicher.mjs +++ b/server/pruef-zwischenspeicher.mjs @@ -289,15 +289,55 @@ console.log("\n=== Der Versionsstempel — daran hängt das automatische Update" if (!letzterCommit) { console.log(" -- konnte nicht nachsehen: kein Commit an workspace/assets gefunden"); } else { - const dateien = git("show", "--name-only", "--format=", letzterCommit) - .stdout.split(/\r?\n/).filter(Boolean); - const hatAssets = dateien.some((f) => /^workspace\/assets\/.*\.(css|js|mjs)$/.test(f)); - const hatSeiten = dateien.some((f) => /^workspace\/.*\.html$/.test(f)); - ok(!hatAssets || hatSeiten, - hatAssets && !hatSeiten - ? `Commit ${letzterCommit.slice(0, 7)} hat Stilvorlagen geändert, aber keine HTML — ` - + "der Stempel wurde nicht mitgezogen, die Änderung käme bei niemandem an" - : `im letzten Commit an assets/ (${letzterCommit.slice(0, 7)}) wurde der Stempel mitgezogen`); + /* DIE FRAGE IST NICHT "STEHT BEIDES IM SELBEN COMMIT", SONDERN + "KOMMT DIE ÄNDERUNG AN" (geschärft 20.09.2026). + + Vorher verlangte diese Stelle, dass derselbe Commit die + Stilvorlage UND die HTML ändert. Das ist der Normalfall (der + Stempel wird vor dem Committen gezogen), aber nicht die Regel: + Wird der Stempel in einem FOLGE-Commit nachgezogen, kommt die + Änderung genauso an — die Prüfung blieb trotzdem rot und + beschuldigte einen Commit, an dem nichts falsch war. + + Verglichen wird deshalb der Stempel selbst mit dem Zeitpunkt + der letzten Änderung an assets/. Ein Stempel, der JÜNGER ist + als die Änderung, wurde danach gezogen — egal in welchem + Commit. Einer, der älter ist, kann sie nicht enthalten. + + Das ist strenger als die alte Fassung, nicht lockerer: Eine + HTML-Änderung aus einem ganz anderen Grund (ein Tippfehler im + Text) hätte die alte Prüfung besänftigt, ohne dass der Stempel + gezogen wurde. Die Zahl lügt nicht. */ + const wannRoh = git("log", "-1", "--format=%cI", letzterCommit).stdout.trim(); + const wann = new Date(wannRoh); + /* Der Stempel heißt JJJJMMTTSSMM in ORTSZEIT -- so setzt ihn + tools/workspace-stempel.mjs. Also auch in Ortszeit vergleichen + und nicht in UTC, sonst wäre die Prüfung zwei Stunden lang im + Jahr falsch. */ + const z = (n) => String(n).padStart(2, "0"); + const alsStempel = (dd) => Number(`${dd.getFullYear()}${z(dd.getMonth() + 1)}` + + `${z(dd.getDate())}${z(dd.getHours())}${z(dd.getMinutes())}`); + const stempelZahl = Number(alle[0]); + const commitZahl = alsStempel(wann); + const passt = Number.isFinite(stempelZahl) && Number.isFinite(commitZahl) + && stempelZahl >= commitZahl; + ok(passt, + passt + ? `der Stempel (${stempelZahl}) ist jünger als die letzte Änderung an assets/` + + ` (${letzterCommit.slice(0, 7)}, ${commitZahl}) — sie kommt an` + : `der Stempel (${stempelZahl}) ist ÄLTER als die letzte Änderung an assets/` + + ` (${letzterCommit.slice(0, 7)}, ${commitZahl}) — der Browser behält seine` + + " alte Kopie, die Änderung käme bei niemandem an"); + + /* GEGENPROBE: Diese Zeile ist ein Zahlenvergleich, und ein + Zahlenvergleich bestaetigt gern. Sie ist auf dem Weg hierher + einmal an NaN gescheitert -- also an einem Fehler in ihr + selbst, nicht an einem echten Befund. Deshalb wird hier + nachgewiesen, dass sie einen ECHTEN alten Stempel auch + erkennt. */ + const alterStempel = commitZahl - 1; + ok(!(alterStempel >= commitZahl) && stempelZahl >= commitZahl, + `Gegenprobe: ein Stempel von ${alterStempel} wuerde durchfallen, ${stempelZahl} nicht`); } } } diff --git a/workspace/anruf-probe.html b/workspace/anruf-probe.html index 2fe1b45d..eeeffeaf 100644 --- a/workspace/anruf-probe.html +++ b/workspace/anruf-probe.html @@ -1,130 +1,130 @@ - - - - - -Anruf-Probe · Team Dogi - - - - - - - - - - - -
- ‹ Zurück -
Anruf-Probe
-
-
- -
-

Warum klingelt es nicht?

-

- Diese Seite geht der Reihe nach durch, was ein Anruf braucht – und sagt, - an welcher Stelle es hakt. Sie ruft niemanden an. -

- -
- - - -

-
- - - - - + + + + + +Anruf-Probe · Team Dogi + + + + + + + + + + + +
+ ‹ Zurück +
Anruf-Probe
+
+
+ +
+

Warum klingelt es nicht?

+

+ Diese Seite geht der Reihe nach durch, was ein Anruf braucht – und sagt, + an welcher Stelle es hakt. Sie ruft niemanden an. +

+ +
+ + + +

+
+ + + + +