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. -
- - - - - - -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 @@ - - -
- - -- Diese Seite geht der Reihe nach durch, was ein Anruf braucht – und sagt, - an welcher Stelle es hakt. Sie ruft niemanden an. -
- - - - - - -+ Diese Seite geht der Reihe nach durch, was ein Anruf braucht – und sagt, + an welcher Stelle es hakt. Sie ruft niemanden an. +
+ + + + + + +