Zwoelf rote Pruefungen -- und kein einziger Fehler im Programm

Der Rundumcheck geht weiter. Diese zwoelf standen im Nachtlauf als rot
und waren es nicht: Jede hat den Umbau vom 24.09. (die Haustrennung),
den vom 25.09. (die zugetragenen Punkte) oder eine Umbenennung
mitbekommen -- nur ihre Erwartung nicht.

DAS IST KEIN TROST. Ein Fehlalarm zeigt auf eine echte Stelle und nennt
eine plausible Zahl; man sucht danach an richtigem Code. Und zwoelf rote
Zeilen, die immer rot sind, nehmen dem ganzen Satz die Stimme.

=== DIESELBE WURZEL, SECHSMAL: DAS FALSCHE HAUS ===

Seit dem 24.09. antwortet der Server auf der Agenturadresse nicht mehr
ueber Team-Dogi-Leute -- und genau das taten diese Pruefungen:

  pruef-nachwuchs      legte einen Modi ueber die Agenturadresse an
                       (400). Einundzwanzig Meldungen hingen an diesem
                       einen Aufruf. 82 Zeilen auf crew. umgestellt,
                       aus „Mara, Managerin" wurde die linke Hand --
                       im Teamhaus ist sie das, was gemeint war.
                       230 -> 262 Pruefungen, 0 Fehler.
  pruef-schritt        dasselbe beim Aufgabenbrett (404/400).
  pruef-treff-werkzeuge fragte die Einladungsliste eines Modis auf der
                       Agenturadresse ab -- dort ist er nicht.
  pruef-rechte-umstellen benutzte `wissen.html` als zweite Probeseite.
                       Die ist laut Rechtetafel fuer alle offen und auf
                       crew. trotzdem zu: Dort kommt man nur auf Seiten,
                       fuer die es eine Kachel gibt. Jetzt material.html.
  pruef-personen-formular verglich eine Erwartung FUER die Agentur mit
                       einer Messung OHNE Adresse (127.0.0.1) -- vier
                       gegen acht Rollen. Beides war richtig, nur nicht
                       dasselbe.
  pruef-treff          suchte „Support" zwischen den Brettern. Er steht
                       in „Fuer dich", wo er hingehoert -- eine kaputte
                       Seite zu melden ist kein Aushang. Die Liste stand
                       ZWEIMAL in der Datei; nachgezogen wurde eine.
                       Jetzt eine, von beiden benutzt.

=== ZWEIMAL: EINE FESTE ZAHL, DIE DIE SEITE UEBERHOLT HAT ===

  pruef-community-sicht erlaubte „3 bis 8 Seiten". Es sind zwoelf, und
                       jede gehoert dorthin. Statt einer Spanne steht
                       jetzt die LISTE da: Kommt eine dazu, wird die
                       Zeile rot und nennt sie beim Namen. Eine Spanne
                       haette elf statt zwoelf stillschweigend
                       durchgelassen -- in beide Richtungen.
  pruef-nachwuchs      schaltete EINE Person ab und erwartete, dass die
                       Ampel danach schweigt. Der Kommentar darueber
                       sagt selbst: „Die Schwelle wird nicht
                       abgeschrieben, sondern aus dem Verhalten
                       abgeleitet" -- eine feste Anzahl abzuschalten ist
                       aber eine Abschrift in anderer Waehrung. Jetzt
                       wird abgeschaltet, BIS es kippt.

=== UND VIERMAL EIN WERKZEUG, DAS STUMPF WAR ===

  pruef-scout-zuteilung suchte `.person__zeile` -- eine Klasse, die es
                       nicht mehr gibt. `querySelectorAll` liefert dafuer
                       ein leeres Feld, `.some()` darauf ist immer
                       false: Die Pruefung war nicht rot, weil etwas
                       fehlte, sondern weil sie nichts ansehen konnte.
                       Jetzt `.person`, und die ANZAHL der gefundenen
                       Karten steht in einer eigenen Bedingung.
  pruef-loeschen       suchte `::before` in einem Fenster von 600
                       Zeichen ab dem Selektor. Das misst die Laenge des
                       KOMMENTARS: Am 25.09. kam eine Begruendung von
                       zwanzig Zeilen dazu, und die Regel rutschte
                       hinaus. Jetzt wird nach dem Selektor gesucht.
  pruef-portnummern    hielt jedes `listen(` fuer einen Serverstart --
                       auch das blosse Nachsehen, ob eine Nummer frei
                       ist. Damit mahnte sie ausgerechnet die Datei an,
                       die das Vergeben der Nummern prueft. Jetzt zaehlt
                       der Import von `index.js`; dazu vier Gegenproben,
                       damit die engere Fassung nicht zum blinden Fleck
                       wird.
  pruef-spicy          stellte eine Person auf „manager" und dann
                       weiter. An Managern aendert seit dem 22.09. nur
                       DogFather etwas -- die Pruefung hatte sich selbst
                       die Tuer zugezogen. Jetzt kommt „manager" zuletzt,
                       und dass danach nichts mehr geht, ist eine eigene
                       Zeile. Aus dem Stolperstein wird eine Aussage.

=== EINER WAR FAST EIN BEFUND ===

  pruef-alle-sehen-es  meldete „highlight: DogFather 0, Community 0".
                       Das Brett hat als einziges keinen Katalog (dort
                       stehen echte Hoehepunkte, keine Vorlagen), und an
                       einem leeren Brett ist „sehen beide dasselbe?"
                       nicht zu messen: null gleich null waere auch dann
                       wahr, wenn die Community gar nichts duerfte.
                       Die Pruefung legt dort jetzt selbst einen Eintrag
                       an -- und musste dabei zweimal lernen: Der Eintrag
                       gehoert VOR den Katalog (danach ist die
                       Schreibbremse ausgeloest, 429), und er muss
                       FREIGEGEBEN werden, sonst sieht die Community ihn
                       zu Recht nicht. Beides steht jetzt als Aussage in
                       der Pruefung.

GEMESSEN: alle zwoelf gruen -- 43, 10, 31, 262, 43, 15, 56, 69, 37, 85,
73 und 80 Pruefungen, zusammen 804, kein Fehler.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-09-25 22:54:21 +02:00
co-authored by Claude Opus 5
parent 3b73e1f42e
commit 1ba9d07af2
13 changed files with 545 additions and 124 deletions
+45 -6
View File
@@ -347,24 +347,63 @@ const ruf = async (art, weg, keks, koerper) => {
/* Die vier Kategorien, die Filipe genannt hat -- einzeln, nicht als
"irgendeine geht". Waere nur eine davon offen, saehe ein "geht"
genauso aus. */
for (const r of ["scout", "manager", "spicy"]) {
genauso aus.
==== UND MANAGER KOMMT ZULETZT (25.09.2026) ====================
Hier stand die Reihenfolge scout, manager, spicy -- und ab dem
zweiten Schritt war die Person eine MANAGERIN. An denen aendert
seit dem 22.09. nur DogFather etwas (`nurDogFatherBeiLeitung`),
also antwortete der Server ab da mit 403, und zwei Zeilen wurden
rot. Der Server hatte recht; die Pruefung hatte sich selbst die
Tuer zugezogen.
Jetzt stehen die drei frei waehlbaren zuerst, und „manager" ist
der letzte Schritt -- danach ist die Person geschuetzt, und
genau DAS wird in der Zeile darunter ausdruecklich gemessen.
Aus einem Stolperstein wird damit eine Aussage. */
for (const r of ["scout", "spicy", "creator", "manager"]) {
const a = await zu(keksSpicy, r);
ok(a.status === 200 && a.daten?.rolle === r,
`Spicy Media stellt auf "${r}" um (HTTP ${a.status})`);
}
const zurueck = await zu(keksSpicy, "creator");
ok(zurueck.status === 200, `und wieder zurueck auf Creator (HTTP ${zurueck.status})`);
/* UND JETZT IST SIE GESCHUETZT. Ohne diese Zeile waere die
Reihenfolge oben nur eine Bequemlichkeit; so ist sie der Beleg
fuer die Schranke. */
const nachManager = await zu(keksSpicy, "creator");
ok(nachManager.status === 403,
`an einer Managerin aendert Spicy Media nichts mehr (HTTP ${nachManager.status})`);
/* DogFather darf es -- sonst waere „403" oben auch dann gruen, wenn
der Weg gar nicht mehr existiert. */
const zurueck = await zu(keksDogi, "creator");
ok(zurueck.status === 200,
`DogFather stellt sie wieder auf Creator (HTTP ${zurueck.status})`);
/* DIE EINZIGE, DIE NICHT GEHT. */
const hoch = await zu(keksSpicy, "admin");
ok(hoch.status === 403,
/* 403 ODER 400 -- dieselbe Ueberlegung wie zwei Zeilen tiefer: Die
Aussage ist „DogFather laesst sich nicht vergeben", nicht „der
Server nimmt dafuer genau diesen Weg". Seit „admin" aus der Liste
der vergebbaren Rollen heraus ist, antwortet er mit 400
(„Unbekannte Rolle") statt mit 403 -- die Tuer ist damit sogar
eine Schicht frueher zu. */
ok(hoch.status === 403 || hoch.status === 400,
`DogFather laesst sich nicht vergeben (HTTP ${hoch.status}, ${hoch.daten?.fehler || ""})`);
/* AUCH NICHT VON DOGFATHER SELBST. Das ist der Satz "das ist die
einzige die man nicht auswaehlen kann" -- ohne Ausnahme. */
const vonDogi = await zu(keksDogi, "admin");
ok(vonDogi.status === 403,
/* 403 ODER 400 -- beides heisst „geht nicht", und welches davon
kommt, haengt daran, an welcher Schranke es scheitert: an der
Rechtefrage oder an der Liste der vergebbaren Rollen, in der
„admin" gar nicht steht. Die Aussage ist, dass DogFather sich
nicht verdoppeln laesst -- nicht, welchen der beiden Wege der
Server dafuer nimmt. Auf eine Zahl festgelegt war diese Zeile
seit dem Umbau der Rollenliste rot, ohne dass etwas offen
gewesen waere. */
ok(vonDogi.status === 403 || vonDogi.status === 400,
`auch DogFather kann sie nicht vergeben (HTTP ${vonDogi.status})`);
/* UND AN DOGFATHER SELBST AENDERT SIE NICHTS. Die Pruefungen oben