Vier rote Pruefungen -- drei Phantome und ein echtes Gewicht

Weiter durch die rote Liste. Drei der vier Befunde zeigten auf
gesunden Code; die Pruefungen selbst waren seit einem Umbau nicht
nachgezogen worden.

pruef-schritt (2 rot -> 71 gruen statt 47)
  Meldete "1 von 6 Kategorien". Die Karte geht seit dem 01.10.2026
  gefiltert auf ("zugetragen"), Bloecke ohne solche Punkte werden gar
  nicht gezeichnet. Die Pruefung zaehlte danach alle. Schlimmer: Weil
  dann kein Block mehr zugeklappt war, lief der Klick auf einen
  zugeklappten 30 Sekunden in die Frist und riss den Lauf mit -- 24 von
  71 Pruefungen liefen nie. Jetzt wird erst die Vorgabe geprueft (sie
  ist eine Zusage), dann auf "Alle" gestellt.

pruef-glocke (1 rot -> 34 gruen)
  Meldete "auf der Anmeldeseite steht der Knopf". Gemessen landete sie
  auf start.html: Dieselbe Seite war eine Zeile zuvor angemeldet durch
  zwanzig Arbeitsseiten gelaufen, und angemeldet fuehrt /workspace/
  nicht zur Wand. Jetzt eigener Kontext ohne Keks -- und davor die
  Zeile, dass die Wand wirklich erreicht wurde.

pruef-zeichen (1 rot -> 8 gruen)
  Meldete content: "·" als Kodierungstruemmer. Die Bytes sind C2 B7,
  also korrektes UTF-8; der Mittelpunkt ist ein begruendeter Trennpunkt
  (seit 03.10.). Die Regel stammt aus einer Zeit, in der sie selbst
  festhielt: "KEINE einzige benutzt ein Zeichen aus diesem Block."
  Jetzt eine benannte Ausnahme MIT Veraltungsschutz: Jedes Zeichen
  darin muss wirklich vorkommen, sonst wird die Ausnahme rot.

pruef-tempo-workspace (1 rot -> 9 gruen) -- DER ECHTE BEFUND
  uebersicht.html 959 KB, bereich.html?b=live 1094 KB bei einer Grenze
  von 900. Die Pruefung sagt jetzt auch, WORAN es liegt, und die
  Antwort war eindeutig: ZWEI Buehnenbilder auf einer Seite, die eines
  zeigt (281 KB studio + 262 KB portal).

  Ursache: start.css traegt an body.start::before einen Rueckfall
  (studio), und kopf.js setzt `data-buehne` erst, wenn die Seite steht.
  Bis dahin ist der Rueckfall geholt -- auf 43 von 45 Seiten.

  Jetzt steht die Szene fest im <body>, erzeugt aus bereiche.js
  (tools/buehne-festschreiben.mjs, 20 Seiten). bereich.html bedient
  fuenf Bretter und kann das nicht; sie bekommt ein kleines Skript
  gleich hinter <body>, das die Szene aus `?b=` setzt, bevor gezeichnet
  wird. Gemessen: 1094 -> 879 KB, und die Grenze haelt wieder.

  DIE ZUORDNUNG STEHT DAMIT AN ZWEI STELLEN. Das ist nur vertretbar,
  weil sie nicht auseinanderlaufen kann: pruef-buehnen-fest.mjs (neu,
  13 Pruefungen) haelt HTML gegen bereiche.js, prueft die Lage des
  Skripts und dass jede genannte Szene eine Regel hat.

  Dabei gefunden und berichtigt -- zweimal an mir selbst: Der erste
  Entwurf verglich Szenen mit Dateinamen und meldete teamlage.html
  ("eingang") als Fehler; die Szene gibt es, ihre Regel zeigt nur auf
  ein crew-Bild. Und der Lage-Anker suchte `data-buehne`, das Skript
  schreibt `dataset.buehne` -- indexOf gab -1, die Rechnung wurde
  negativ und meldete "-2276 Zeichen dahinter".

Gegenproben gefahren: Szene verschoben -> rot mit Abstand; Ausnahme
verwaist -> rot; erfundene Szene -> erkannt.
Dazu gruen: css-klassen, workspace-seiten, neue-seiten, haus-trennung,
kopfleiste-farbe.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-10-07 13:05:54 +02:00
co-authored by Claude Opus 5
parent 14fa825848
commit da7508b6ce
52 changed files with 1132 additions and 718 deletions
+55 -24
View File
@@ -12,32 +12,63 @@
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
eine Flaeche sind statt zweier. -->
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202610071218" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610071218" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610071218" />
<link rel="stylesheet" href="assets/css/start.css?v=202610071218" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610071218" />
<link rel="stylesheet" href="assets/css/bereich.css?v=202610071218" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202610071305" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610071305" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610071305" />
<link rel="stylesheet" href="assets/css/start.css?v=202610071305" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610071305" />
<link rel="stylesheet" href="assets/css/bereich.css?v=202610071305" />
<!-- Wegen des Blocks „Willst du dazugehoeren?" auf dem Brett
„Mitmachen". Eine eigene Kopie der Regel hier waere die zweite
Stelle, an der dieselbe Sache anders aussieht. -->
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202610071218" />
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202610071305" />
<!-- Die Bildschau: ein Banner wird darin mittig gezeigt statt als nackte
Datei in einem neuen Tab. Sie ist seit dem 07.10.2026 eine eigene
Datei und keine Kopie aus chat.css -- dieselbe Schau im Chat und
hier, ein Stil. -->
<link rel="stylesheet" href="assets/css/bildschau.css?v=202610071218" />
<link rel="stylesheet" href="assets/css/module.css?v=202610071218" />
<link rel="stylesheet" href="assets/css/bildschau.css?v=202610071305" />
<link rel="stylesheet" href="assets/css/module.css?v=202610071305" />
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
genau diesen Dateinamen auf crew-haus.css um, und die Seite
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
ohne Umfaerben im Browser, ohne Flackern. -->
<link rel="stylesheet" href="assets/css/haus.css?v=202610071218" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610071305" />
</head>
<body class="start">
<!-- ====================================================================
DIE SZENE, BEVOR GEZEICHNET WIRD (07.10.2026)
Jede andere Seite trägt ihre Szene fest im <body>. Diese hier kann
das nicht: Sie bedient fünf Bretter, und welches gemeint ist, steht
erst in der Adresse (`?b=live`).
WARUM DAS NICHT BIS ZU `kopf.js` WARTEN DARF: `start.css` hat an
`body.start::before` einen Rückfall (das Studio-Bild). Wird die
Szene erst nachträglich gesetzt, hat der Browser den Rückfall
längst geholt — gemessen am 07.10.2026 auf dieser Seite:
281 KB buehne-studio-breit.webp UND 262 KB buehne-portal-breit.webp,
zusammen 1094 KB für eine Seite, die ein Bild zeigt.
Deshalb hier, als erstes im Dokument und ohne `defer`: Zu diesem
Zeitpunkt steht noch nichts auf dem Schirm, und der Browser holt
nur das eine Bild, das wirklich gebraucht wird.
DIE ZUORDNUNG STEHT DAMIT AN ZWEI STELLEN — hier und in
`bereiche.js`. Das ist nur deshalb vertretbar, weil sie nicht
auseinanderlaufen kann: `pruef-buehnen-fest.mjs` hält beide
gegeneinander und wird rot, sobald sich eine ändert.
==================================================================== -->
<script>
(function () {
var SZENE = { live: "portal", community: "lounge", technik: "garage",
schutz: "halle", agentur: "halle" };
var b = new URLSearchParams(location.search).get("b");
if (b && SZENE[b]) document.body.dataset.buehne = SZENE[b];
})();
</script>
<!-- Der Schleier ueber der Buehne (Casper und HasiDog in den unteren
Ecken, siehe start.css). Ein eigenes Element statt eines dritten
@@ -323,20 +354,20 @@
<!-- TEXTFORM ZUERST (21.09.2026): Die Seite fragt beim Zeichnen nach
`window.Textform`. Kaeme sie spaeter, waere der erste Eintrag ohne
Gestaltung. Kein `defer`, damit sie wirklich vorher dasteht. -->
<script src="assets/js/textform.js?v=202610071218"></script>
<script src="assets/js/meldung.js?v=202610071218" defer></script>
<script src="assets/js/nachfrage.js?v=202610071218" defer></script>
<script src="assets/js/textform.js?v=202610071305"></script>
<script src="assets/js/meldung.js?v=202610071305" defer></script>
<script src="assets/js/nachfrage.js?v=202610071305" defer></script>
<script src="assets/js/wahl.js?v=202610071218" defer></script>
<script src="assets/js/bereiche.js?v=202610071218" defer></script>
<script src="assets/js/installieren.js?v=202610071218" defer></script>
<script src="assets/js/kopf.js?v=202610071218" defer></script>
<script src="assets/js/glocke.js?v=202610071218" defer></script>
<script src="assets/js/checkliste.js?v=202610071218" defer></script>
<script src="assets/js/ampel.js?v=202610071218" defer></script>
<script src="assets/js/schulung.js?v=202610071218" defer></script>
<script src="assets/js/holen.js?v=202610071218" defer></script>
<script src="assets/js/bildschau.js?v=202610071218"></script>
<script src="assets/js/bereich.js?v=202610071218" defer></script>
<script src="assets/js/wahl.js?v=202610071305" defer></script>
<script src="assets/js/bereiche.js?v=202610071305" defer></script>
<script src="assets/js/installieren.js?v=202610071305" defer></script>
<script src="assets/js/kopf.js?v=202610071305" defer></script>
<script src="assets/js/glocke.js?v=202610071305" defer></script>
<script src="assets/js/checkliste.js?v=202610071305" defer></script>
<script src="assets/js/ampel.js?v=202610071305" defer></script>
<script src="assets/js/schulung.js?v=202610071305" defer></script>
<script src="assets/js/holen.js?v=202610071305" defer></script>
<script src="assets/js/bildschau.js?v=202610071305"></script>
<script src="assets/js/bereich.js?v=202610071305" defer></script>
</body>
</html>