diff --git a/server/pruef-entwicklung.mjs b/server/pruef-entwicklung.mjs index 76b8af76..66c38db7 100644 --- a/server/pruef-entwicklung.mjs +++ b/server/pruef-entwicklung.mjs @@ -308,12 +308,49 @@ console.log("=== Die Kacheln ==="); ok(!!befinden, `${wer} hat „${befinden?.name || "—"}"`); ok(befinden?.gruppe === "Für dich", `und sie steht bei „Für dich" (${befinden?.gruppe})`); - /* GEGENPROBE: Sie fuehrt NICHT mehr dorthin, wo andere Menschen - stehen -- sonst waere der gemeldete Fehler beim naechsten Umbau - still wieder da. */ - ok(!alleX.some((k) => k.ziel === "entwicklung.html" - && !["Eure Aufgaben", "Talente"].includes(k.name)), - `${wer}: keine Kachel fuehrt mehr ersatzweise auf die Entwicklungsseite`); + /* GEGENPROBE: Die Kachel, die VERTRAULICHKEIT VERSPRICHT, fuehrt + nicht dorthin, wo andere Menschen stehen. + + HIER STAND EINE NAMENSLISTE (20.09.2026 ersetzt). Sie lautete + `!["Eure Aufgaben", "Talente"].includes(k.name)` -- und war damit + eine abgeschriebene Liste, genau die Sorte, vor der dieses Haus + an drei Stellen warnt. Als ein Modi eine eigene Kachel bekam + ("Deine Aufgaben", weil "Eure" aus seiner Sicht falsch ist), + wurde diese Pruefung rot, OHNE dass irgendetwas kaputt war. Eine + rote Pruefung, die rot bleibt, gewoehnt einem das Hinsehen ab -- + sie ist schaedlicher als gar keine. + + Geprueft wird jetzt, was Filipe eigentlich gemeldet hat: Auf der + Kachel stand "die Antworten sieht nur du", und sie fuehrte auf + eine Seite mit Namen anderer Leute. Das ist eine Eigenschaft des + VERSPRECHENS, nicht des Namens -- und Versprechen stehen im + Untertitel. Wer morgen eine Kachel "Dein Kopf" nennt und dasselbe + verspricht, ist damit mitgeprueft; die Namensliste haette ihn + durchgelassen. */ + const verspricht = (k) => /nur du|nur dich|siehst nur du/i.test(k.unter || ""); + const heikel = alleX.filter((k) => verspricht(k) && k.ziel === "entwicklung.html"); + ok(alleX.some(verspricht) && heikel.length === 0, + `${wer}: keine Kachel verspricht Vertraulichkeit und fuehrt doch auf die` + + ` Entwicklungsseite (${alleX.filter(verspricht).length} mit Versprechen geprueft)`); + + /* UND DIE ECHTE GRENZE, die bisher NIEMAND gemessen hat. + Ob eine Kachel richtig zeigt, ist Beschriftung. Ob die Seite + dahinter fremde Namen herausgibt, sind Daten -- und nur das + schuetzt jemanden wirklich. Ein Modi darf dort NIEMANDEN + bekommen ausser sich selbst. */ + const lage = await hole("/workspace/api/entwicklung/lage", { host: CREW, keks }); + const fremde = (lage.daten?.personen || []).filter((q) => q.id !== undefined); + if (wer === "ein Modi") { + ok(lage.status === 200 && fremde.length === 0, + `${wer} bekommt auf der Entwicklungsseite KEINE fremden Namen (${fremde.length})`); + } else { + /* Die Gegenprobe zur Zeile darueber: Waere der Filter kaputt und + liesse niemanden durch, saehe auch die Leitung nichts -- und + die Modi-Zeile waere trotzdem gruen. Beide Richtungen gehoeren + gemessen, sonst beweist keine etwas. */ + ok(lage.status === 200 && fremde.length > 0, + `${wer} bekommt sie sehr wohl (${fremde.length}) -- der Filter ist nicht einfach zu`); + } } const a = await hole("/workspace/api/ich", { host: CREW, keks: ayla.keks });