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 <[email protected]>
This commit is contained in:
2026-09-21 11:45:06 +02:00
co-authored by Claude Opus 5
parent 200728c8e7
commit e12074c32c
2 changed files with 179 additions and 139 deletions
+49 -9
View File
@@ -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`);
}
}
}