Tagesgrenze: jetzt auch die Vergleiche, nicht nur das Schreiben

Von den sechzehn Stellen vom 01.10. SCHREIBEN zehn einen Tag in die
Datenbank — die decken die zwei Abschnitte von vorhin ab. Sechs
VERGLEICHEN gegen „heute": ist diese Frist vorbei, faellt dieser
Lead in den Zeitraum, ist dieser Bericht aktuell.

Davon findet ein Schreibtest keinen einzigen. Die Spalte sieht
richtig aus; falsch ist die Zahl, die jemand auf dem Bildschirm
liest.

ZWEI AUFGABEN GENUEGEN. Die Regel im Haus ist `frist < heute`:

    Frist = gestern (Ortszeit)  ->  muss ueberfaellig sein
    Frist = heute   (Ortszeit)  ->  darf es nicht sein

Mit dem alten UTC-Tag geht das in BEIDEN Zweigen der verschobenen
Uhr schief:

    Etc/GMT-14 (Ortstag = UTC+1): heute_alt waere gestern -> 0 statt 1
    Etc/GMT+11 (Ortstag = UTC-1): heute_alt waere morgen  -> 2 statt 1

GEGENPROBE AM ECHTEN CODE: In workspace-aufgaben.js den UTC-Tag
wieder eingebaut -> „genau eine ist ueberfaellig (0)". Zurueckgedreht
und wieder gruen.

UND EIN BEFUND AN MEINER EIGENEN PRUEFUNG, bei genau dieser
Gegenprobe: Die zweite Zahl (`heute`) blieb 1 — aber sie zaehlte die
FALSCHE Aufgabe. Mit dem UTC-Tag galt die von gestern als heute
faellig. Mit zwei Zahlen allein ist das nicht zu trennen; in beiden
Zweigen bleibt sie 1.

Sie steht jetzt ausdruecklich als BEGLEITPROBE da: Sie zeigt, dass
ueberhaupt gezaehlt wird, und der Unterschied kommt aus der Zeile
darueber. Eine Zahl, die aus dem falschen Grund stimmt, soll nicht
aussehen wie ein Beweis.

Dazu im Lauf eine ausgerechnete Zeile, die sagt, WARUM die Zahlen
etwas beweisen: „mit dem UTC-Tag waeren es 0 statt 1".

IM FENSTER NACHGEMESSEN (00:09 bis 00:40 Ortszeit, UTC noch der
Vortag) — die restlichen Pruefungen, die ich gestern zur falschen
Tageszeit geprueft hatte: zuteilung 75, aufgabenbrett 49,
content 45, vorlagen 24, bewerbung 91, scout-zuteilung 37,
unterstuetzung 70, aufbewahrung 45, ics 38, entwicklung 79 — alle 0
Fehler. Zusammen mit den vierzehn von vorhin sind das 24 Dateien,
die diesmal im richtigen Zeitfenster gemessen wurden.

pruef-tagesgrenze: 8 -> 12 Pruefungen, 0 Fehler.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-10-02 00:36:44 +02:00
co-authored by Claude Opus 5
parent c5f4d237e3
commit 365e789cce
+58 -2
View File
@@ -65,7 +65,7 @@ import { mkdtempSync, rmSync } from "node:fs";
import { tmpdir } from "node:os";
import { join } from "node:path";
import { eigenerPort } from "./helfer-port.mjs";
import { heuteLokal } from "./helfer-tag.mjs";
import { heuteLokal, tagLokal } from "./helfer-tag.mjs";
let fehler = 0, geprueft = 0;
const ok = (b, t) => { geprueft++; console.log((b ? " ok " : " FEHL ") + t); if (!b) fehler++; };
@@ -180,7 +180,63 @@ console.log("\n=== 2. Und die Kette, an der es aufgefallen ist ===");
`und er liegt auf dem Ortstag ${ORTSTAG}, nicht auf ${UTC_TAG} (steht: ${t?.datum})`);
}
console.log("\n=== 3. Gegenprobe: wuerde der alte Weg auffallen? ===");
console.log("\n=== 3. Und die VERGLEICHE: was ist ueberfaellig? ===");
/* Von den sechzehn Stellen vom 01.10. SCHREIBEN zehn einen Tag; die
zwei Abschnitte oben decken sie ab. Sechs VERGLEICHEN gegen
„heute" — und davon findet ein Schreibtest keinen einzigen. Die
Spalte sieht richtig aus; falsch ist die Zahl, die jemand auf dem
Bildschirm liest.
Die Regel im Haus ist `frist < heute`. Zwei Aufgaben genuegen, und
sie unterscheiden in BEIDEN Zweigen der verschobenen Uhr:
Etc/GMT-14 (Ortstag = UTC+1): heute_alt waere gestern
-> „gestern" nicht mehr kleiner als heute_alt -> 0 statt 1
Etc/GMT+11 (Ortstag = UTC-1): heute_alt waere morgen
-> „heute" kleiner als heute_alt -> 2 statt 1 */
{
const GESTERN = tagLokal(-1);
const neueAufgabe = (titel, frist) => fetch(`${BASIS}/workspace/api/aufgaben`, {
method: "POST", headers: kopf(dogi),
body: JSON.stringify({ titel, frist, prioritaet: "mittel" }),
});
const a1 = await neueAufgabe("Frist war gestern", GESTERN);
const a2 = await neueAufgabe("Frist ist heute", ORTSTAG);
ok(a1.status === 201 && a2.status === 201,
`zwei Aufgaben angelegt, Fristen ${GESTERN} und ${ORTSTAG}`
+ ` (${a1.status}/${a2.status})`);
const u = await (await fetch(`${BASIS}/workspace/api/uebersicht`,
{ headers: { cookie: dogi } })).json().catch(() => ({}));
ok(u.ueberfaellig === 1,
`genau eine ist ueberfaellig — die von gestern (${u.ueberfaellig})`);
/* DIESE ZAHL UNTERSCHEIDET NICHT, und das gehoert dazugeschrieben.
Gemessen beim Rueckbau: Mit dem UTC-Tag blieb sie 1 — nur zaehlte
sie die FALSCHE Aufgabe (die von gestern galt dann als heute
faellig). Mit zwei Zahlen allein ist das nicht zu trennen; in
beiden Zweigen der verschobenen Uhr bleibt sie 1.
Sie steht hier als Begleitprobe: Sie zeigt, dass ueberhaupt
gezaehlt wird. Der Unterschied kommt aus der Zeile darueber. Eine
Zahl, die aus dem falschen Grund stimmt, soll nicht aussehen wie
ein Beweis. */
ok(u.heute === 1,
`und eine ist fuer heute faellig (${u.heute}) — Begleitprobe,`
+ " sie unterscheidet nicht");
/* WAS DER ALTE WEG GESAGT HAETTE. Nicht nachgebaut, sondern
ausgerechnet: Damit steht im Lauf, warum diese zwei Zahlen etwas
beweisen und nicht nur zufaellig stimmen. */
const alt = UTC_TAG;
const waere = [GESTERN, ORTSTAG].filter((f) => f < alt).length;
ok(waere !== 1,
`mit dem UTC-Tag (${alt}) waeren es ${waere} statt 1 — die Zeile`
+ " ueber dieser unterscheidet also wirklich");
}
console.log("\n=== 4. Gegenprobe: wuerde der alte Weg auffallen? ===");
/* Eine Pruefung, die immer bestaetigt, bestaetigt nichts. Hier wird
nachgebaut, was bis zum 01.10. im Code stand — und gezeigt, dass
die Behauptungen oben daran scheitern wuerden. */