Kapitel 04: der Knopf heisst "Hingehen" -- und das Datum war gar keins

Zwei kleine Dinge aus dem Bauplan, Kapitel 04. Das zweite war ein
echter Fehler, und er war auf dem Weg nach draussen.

"AKTUALISIERT AM" -- UND DANN STUENDE DA EIN ZEITSTEMPEL
`datumKurz` prueft mit einem Ausdruck, der ein `$` am Ende hatte. Die
Stufenkarte schickt einen reinen Tag ("2026-10-13"), die Karte aber
einen ganzen Zeitstempel ("2026-10-06T18:22:31.123Z", aus
`new Date().toISOString()` -- siehe anleitung-tabellen.js und
workspace-anleitung.js). Die zweite Form bestand die Pruefung nicht
und waere UNVERAENDERT durchgereicht worden: Auf der Karte haette
woertlich "aktualisiert am 2026-10-06T18:22:31.123Z" gestanden. Kein
Fehler, kein Absturz, keine rote Meldung -- genau die Sorte Schaden,
die `node --check` nicht sehen kann, und die hier auch niemand
gesehen haette, weil die Zeile nur in der Pflege steht.

Gefunden hat es keine Eingebung, sondern das Nachsehen, WAS der
Server wirklich schickt. Die Pruefung fragt ihn jetzt selbst und
rechnet nicht gegen eine Erinnerung.

"HINGEHEN" STATT "ZUR KACHEL"
So steht es im Plan, und es ist die Sprache der Seite: Sie duzt,
begruesst mit Namen und sagt "Schoen, dass du da bist". "Kachel" ist
das Wort, mit dem wir INTERN ueber die Dinge reden; wer neu ist, hat
es noch nie gehoert.

"AKTUALISIERT AM" STEHT NUR IN DER PFLEGE -- eine Entscheidung, die
der Plan so nicht trifft. Fuer ein Mitglied beantwortet das Datum
keine Frage; DASS sich etwas geaendert hat, sagt ihm die Marke "Neu"
daneben, die von selbst wieder verschwindet. Fuer DogFather
beantwortet es eine sehr konkrete: "Habe ich die schon angefasst?"
Eine Zeile, die auf jeder der 34 Karten steht und niemanden angeht,
zieht den Blick von den drei Zeilen darueber weg. .an-karte__stand
ist deshalb klein und still -- --text-still, dieselbe Stimme wie die
Schilder "Wozu"/"Merke", deren Kontrast auf dieser Flaeche schon
geprueft ist. Keine neue, noch blassere Farbe, die niemand bemerkt,
bis sie nicht mehr lesbar ist.

AUSSERDEM: pruef-community-sicht war rot, und zwar zu Recht.
Die handgefuehrte Liste COMMUNITY_SEITEN kannte die neue
Einweisungsseite nicht und meldete "ZU VIEL: anleitung.html". Das ist
kein Mangel der Liste, sondern ihr Zweck -- sie nennt die
ueberzaehlige Seite selbst. anleitung.html ist jetzt eingetragen, mit
Begruendung, und bei willkommen.html steht dran, dass sie nur noch
weiterleitet. 13 -> 14 Seiten, gruen.

GEPRUEFT (pruef-anleitung 188 -> 196):
  - der Weg-Knopf heisst "Hingehen" (1x), "Zur Kachel" nirgends (0x)
  - "aktualisiert am" haengt an der Pflege (1x), nicht an jeder Karte
  - .an-karte__stand ist wirklich gestaltet
  - der Server schickt "geaendert" als ganzen Zeitstempel (14 von 14)
  - ...und die Karte macht daraus einen lesbaren Tag (14 von 14)
  - der reine Tag der Stufenkarte bleibt richtig (13.10.2026)
  - Gegenprobe: was kein Datum ist, wird auch zu keinem gemacht
Die Rechenvorschrift wird dafuer AUSGEFUEHRT und nicht mit einem
Muster angesehen -- ein Muster waere eine zweite, ungenaue
Nachbildung. Und die Voraussetzung ("der Server schickt wirklich
einen Zeitstempel") wird gemessen, nicht angenommen; ohne sie waere
die Zeile darunter eine Rechnung gegen eine Erinnerung, und die
altert.

GEGENPROBE GEFAHREN: `$` wieder eingebaut -> "...und die Karte macht
daraus einen lesbaren Tag (0 von 14)", EXIT=1, und die Zahl bleibt
196. Eine Pruefung, die immer bestaetigt, bestaetigt nichts.

Dazu gruen, gezielt und nicht als Gesamtlauf:
  pruef-css-klassen      4698 Klassenverwendungen, die neue Klasse ist
                         gestaltet; 42 Stellen unter 11,5 px wie
                         bisher (die neue Zeile ist 12,16 px)
  pruef-community-sicht  10 Pruefungen, 0 Fehler
  pruef-haus-trennung    107 geprueft, 0 Fehler -- das Agenturhaus
                         bleibt von der geaenderten Client-Datei
                         unberuehrt
  pruef-deutsche-texte   12 Pruefungen, 0 Fehler

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-10-06 22:23:22 +02:00
co-authored by Claude Opus 5
parent b885b54628
commit c4bdc1c4c2
50 changed files with 847 additions and 690 deletions
+43 -3
View File
@@ -35,9 +35,25 @@
};
const $ = (id) => document.getElementById(id);
/** „2026-10-13" -> „13.10.2026". Der Server schickt den Tag in der
* sortierbaren Form; gelesen wird hier die gewohnte. */
* sortierbaren Form; gelesen wird hier die gewohnte.
*
* OHNE $ AM ENDE — und das ist nachgemessen, nicht geraten. Es
* kommen ZWEI Formen herein, und sie sehen nur am Anfang gleich aus:
* • `r.datum` ist ein reiner Tag („2026-10-13"), der Server
* schneidet ihn selbst zurecht (`toISOString().slice(0, 10)`).
* • `eintrag.geaendert` ist ein ganzer Zeitstempel
* („2026-10-06T18:22:31.123Z"), so wie `new Date().toISOString()`
* ihn schreibt — siehe anleitung-tabellen.js und
* workspace-anleitung.js.
* Mit dem $ hätte die zweite Form die Prüfung nicht bestanden und
* wäre UNVERÄNDERT durchgereicht worden: Auf der Karte stünde dann
* wörtlich „aktualisiert am 2026-10-06T18:22:31.123Z". Kein Fehler,
* kein Absturz — nur eine Zeile, die niemand lesen will. Genau die
* Sorte Schaden, die ein `node --check` nicht sieht.
* Die Uhrzeit wird bewusst weggelassen: Gefragt ist „habe ich die
* schon angefasst?", nicht die Minute. */
const datumKurz = (iso) => {
const m = /^(\d{4})-(\d{2})-(\d{2})$/.exec(String(iso || ''));
const m = /^(\d{4})-(\d{2})-(\d{2})/.exec(String(iso || ''));
return m ? `${m[3]}.${m[2]}.${m[1]}` : String(iso || '');
};
@@ -226,12 +242,36 @@
zeile('Merke', eintrag.merke);
karte.append(zeilen);
const weg = el('a', 'an-karte__weg', 'Zur Kachel');
/* „HINGEHEN" UND NICHT „ZUR KACHEL" (06.10.2026). So steht es im
Bauplan, Kapitel 04 — und es ist die Sprache der Seite: Sie
duzt, begrüßt mit Namen und sagt „Schön, dass du da bist".
„Zur Kachel" ist das Wort, mit dem wir INTERN über die Dinge
reden; wer neu ist, hat das Wort Kachel noch nie gehört. */
const weg = el('a', 'an-karte__weg', 'Hingehen');
/* MIT dem Zusatz hinter dem Fragezeichen. `bereich.html?b=live` und
`bereich.html?b=technik` sind dieselbe Seite und verschiedene
Kacheln; ohne den Zusatz landeten fünf Karten am selben Ort. */
weg.href = kachel.ziel;
karte.append(weg);
/* „AKTUALISIERT AM" — NUR IN DER PFLEGE (Bauplan Kapitel 04).
Der Plan nennt es bei der Karte. Für ein Mitglied beantwortet
es aber keine Frage: Ob ein Text vor drei Wochen oder gestern
geschrieben wurde, ändert nichts daran, was zu tun ist — und
DASS sich etwas geändert hat, sagt ihm die Marke „Neu"
daneben, die von selbst wieder verschwindet.
Für DogFather beantwortet es eine sehr konkrete: „Habe ich die
schon angefasst?" Deshalb steht es dort, wo die Frage gestellt
wird, und nirgendwo sonst. Eine Zeile, die auf jeder der 34
Karten steht und niemanden angeht, ist genau die Sorte
Kleingedrucktes, die den Blick von den drei Zeilen darüber
wegzieht. */
if (pflegeAn && eintrag.geaendert) {
karte.append(el('p', 'an-karte__stand',
`aktualisiert am ${datumKurz(eintrag.geaendert)}`));
}
return karte;
}