Der verborgene Rollenname stand offen im Netz -- seit dem 22.09.

Gefunden beim Bauen des Vorlagenbretts, nicht gesucht:
pruef-modi-wortleck war ROT, und zwar seit einem Tag. Sieben
Fundstellen in zwei Dateien, die JEDER bekommt, der die Seite oeffnet
-- ohne Anmeldung, aus dem offenen Netz:

    assets/css/team.css     --ton-modi, .tmerkmal--r-modi,
                            .t-gruppe[data-rolle="modi"]
    assets/js/teamlage.js   die Woerter-Tabelle und drei Rueckfaelle

DER ZUGANG HAELT GENAU SO LANGE, WIE NIEMAND DEN NAMEN IM QUELLTEXT
FINDET. Genau dafuer gibt es diese Pruefung: Am 10.09. hatte ich
denselben Fehler schon einmal gemacht und ihn durch Nachsehen
gefunden, nicht durch Nachdenken -- Nachdenken hatte ich vorher
getan. Seither ist die Regel ein Werkzeug statt eines Vorsatzes.

Nur: Das Werkzeug hat einen Tag lang rot geleuchtet, und niemand hat
hingesehen. Das ist der eigentliche Befund an diesem Commit, und er
steht auch in der Vault-Notiz.

WAS SICH AENDERT
----------------
Die Woerter kommen jetzt vom Server (`rolle_name` aus ROLLEN_NAME) --
so wie ueberall sonst im Haus. Der Browser fuehrt keine eigene Liste
mehr; zwei Listen fuer dieselbe Sache waeren ohnehin zwei
Gelegenheiten, dass eine veraltet.

DIE DREI RUECKFAELLE SIND WEG (`|| 'modi'`, `|| 'Modi'`). Am 21.09.
wurde genau so einer an einer vierten Stelle entfernt, mit zwei
Gruenden: Er schreibt den Namen in eine ausgelieferte Datei, und er
hat noch nie etwas bewirkt -- der Server liefert die Rolle immer mit.
Beides galt fuer diese drei ebenso; sie waren damals nur uebersehen
worden. Fehlt die Rolle jetzt doch einmal, bleibt das Merkmal weg
statt falsch.

DER DRITTE FARBTON HEISST NACH SEINER AUFGABE, nicht nach seinem
Traeger: aus `--ton-modi` wird `--ton-team`, der Grundton des Teams.
Die beiden Haende weichen davon ab -- damit braucht die dritte Rolle
gar keinen eigenen Wahlausdruck mehr, und ihr Name steht nirgends in
der Datei. Das ist nicht nur unverfaenglich, es ist auch richtiger:
Eine Farbe gehoert einer Rolle nicht, sie steht fuer sie.

GEPRUEFT
--------
pruef-modi-wortleck: BESTANDEN, 8 von 8 (vorher 1 Fehler).
Ihre eigene Gegenprobe laeuft mit: eine eingebaute Fundstelle wird
erkannt, und "modifiziert", "Modul", "motion", "Modus" schlagen nicht an.

pruef-teamlage-karten: 39 von 39 weiter gruen -- darunter die Zeilen,
auf die es hier ankommt: "jede Karte nennt ihre Rolle im Klartext
(keine Luecke)" und "jede Ueberschrift nennt ihre Rolle und ihre
Anzahl richtig (Rechte Hand 1 · Linke Hand 1 · Modi 5)". Die Woerter
kommen also weiterhin an, nur aus einer anderen Quelle.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-09-23 11:03:12 +02:00
co-authored by Claude Opus 5
parent e736a12cff
commit db8ad683a1
42 changed files with 666 additions and 601 deletions
+37 -9
View File
@@ -48,11 +48,32 @@
Antwort sie nicht mitschickt -- und zwei Woerter nachzuladen waere
ein Abruf fuer nichts. Faellt eine Rolle durch, steht ihr
technischer Name da: sichtbar falsch ist besser als leer. */
const ROLLEN_WORT = {
hand: 'Rechte Hand',
linke: 'Linke Hand',
modi: 'Modi',
};
/* ==== DIE WOERTER STANDEN HIER -- UND DAS WAR EIN LECK ============
Hier lag eine Tabelle mit den drei Rollennamen. Diese Datei
bekommt JEDER, der die Seite oeffnet: jeder Manager, jeder Scout,
jeder Creator -- und sie liegt ohne Anmeldung im Netz. Damit war
der verborgene Zugang im Quelltext nachzulesen.
pruef-modi-wortleck war deswegen seit dem 22.09.2026 rot, einen
ganzen Tag lang, ohne dass es jemandem aufgefallen waere. Genau
davor warnt die Hausregel: Eine Warnung, die niemand liest, ist
keine.
Das Wort kommt jetzt vom Server (`rolle_name`) -- so wie ueberall
sonst im Haus. Faellt es aus, steht der technische Name da:
sichtbar falsch ist besser als leer.
UND DIE RUECKFAELLE SIND WEG. Es standen drei `|| 'modi'` bzw.
`|| 'Modi'` in dieser Datei. Am 21.09. wurde genau so ein
Rueckfall an einer vierten Stelle entfernt, mit der Begruendung,
dass er (1) den Namen in eine ausgelieferte Datei schreibt und
(2) noch nie etwas bewirkt hat -- der Server liefert die Rolle
immer mit. Beides galt fuer diese drei ebenso; sie sind damals
nur uebersehen worden. */
/** Wie heisst diese Rolle? -- vom Server, nicht aus einer Liste hier. */
const rolleWort = (x) => (x && x.rolle_name) || (x && x.rolle) || '';
const tageHer = (iso) => {
if (!iso) return null;
@@ -218,8 +239,13 @@
Dieselbe Sache wie bei der ersten Bewerbung heute frueh: Erst
das Wort macht aus einer Reihenfolge eine Auskunft. */
merkmale.append(el('span', `tmerkmal tmerkmal--rolle tmerkmal--r-${m.rolle || 'modi'}`,
ROLLEN_WORT[m.rolle] || m.rolle || 'Modi'));
/* DIE KLASSE TRAEGT DIE ROLLE, DER TEXT DAS WORT DES SERVERS.
Ohne Rueckfall: Faellt die Rolle aus, bleibt die Klasse eben
leer und die Marke traegt den Grundton -- das ist richtig so,
denn dann weiss niemand, welcher Ton der richtige waere. */
merkmale.append(el('span',
`tmerkmal tmerkmal--rolle${m.rolle ? ` tmerkmal--r-${m.rolle}` : ''}`,
rolleWort(m)));
/* Die Stufe nur, wo es eine gibt. Bei der rechten Hand stand
bisher „Probe" -- sie hat aber gar keine Stufe, und der Server
@@ -789,9 +815,11 @@
if (nachRolle.length > 1) {
const kopf2 = el('h2', 't-gruppe');
kopf2.append(el('span', 't-gruppe__wort',
ROLLEN_WORT[gruppe.rolle] || gruppe.rolle || 'Team'));
rolleWort(gruppe.leute[0]) || 'Team'));
kopf2.append(el('span', 't-gruppe__zahl', String(gruppe.leute.length)));
kopf2.dataset.rolle = gruppe.rolle || 'modi';
/* OHNE RUECKFALL. Fehlt die Rolle, steht kein Merkmal da --
statt eines falschen, das niemand mehr hinterfragt. */
if (gruppe.rolle) kopf2.dataset.rolle = gruppe.rolle;
ziel.append(kopf2);
}
const runde = el('div', 't-leute');