Die alte Wand schweigt: ein Modi-Code zaehlt dort wie ein erfundener

Filipe: "auf der workspace seite fuer die agentur und so sollen die modis
von mir nicht mehr rein kommen." Das war seit dem Deploy schon so -- ein
Modi bekam dort keine Sitzung. Offen war nur, WIE die Wand reagiert:
Bis eben zeigte sie ihm den Weg zur neuen Adresse. Seine Entscheidung:
"gar nichts -- Code stimmt nicht."

WARUM DAS EIN ANDERER WEG IST UND NICHT NUR EINE ANDERE ANTWORT

Ein schlichtes `return 401` haette die richtige Meldung gezeigt und
trotzdem eine Spur hinterlassen: Der verborgene Zugang waere weiterhin
befragt worden -- ein Suchschluessel-Treffer und EIN scrypt-Durchlauf
statt der Kandidatenschleife der gewaehlten Kachel. Das ist messbar, und
Zeitunterschiede sind genau die Spur, die dieser Zugang vermeiden soll.

Deshalb wird stillerZugang() auf den drei alten Adressen ueberhaupt
nicht mehr aufgerufen. Der Code faellt danach durch den gewohnten Weg
wie jeder unbekannte: dieselbe Schleife, derselbe Eintrag in `versuche`,
dieselbe Antwort, dieselbe Dauer. Die alte Wand verhaelt sich exakt so
wie an dem Tag, bevor es diese Rollen gab.

GEPRUEFT WIRD DIE UNUNTERSCHEIDBARKEIT, NICHT DER STATUSCODE
Eine 401 waere leicht zu erfuellen und truege trotzdem eine Spur, wenn
Rumpf oder Koepfe anders aussaehen. Die Pruefung schickt deshalb einen
echten Modi-Code und einen frei erfundenen an dieselbe Wand und
vergleicht Zeichen fuer Zeichen:

  ok  workspace.: der Modi-Code wird abgewiesen wie ein erfundener (401)
  ok  workspace.: und die Antwort ist Zeichen fuer Zeichen dieselbe
  ok  workspace.: die neue Adresse wird nicht genannt

DER PREIS, und er gehoert genannt: Ein Modi mit der alten Verknuepfung
sammelt dort jetzt Fehlversuche wie jeder andere. Acht in zehn Minuten
sperren seine IP -- auch fuer die neue Adresse, denn die Sperre haengt
an der IP, nicht am Hostnamen.

GEMESSEN
pruef-crew-adresse    115 (statt 114 -- die neue Gegenprobe)
pruef-rollen          274   pruef-modi-verborgen  78

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-09-10 15:44:18 +02:00
co-authored by Claude Opus 5
parent 63b3ace3fa
commit d36f122926
2 changed files with 57 additions and 43 deletions
+24 -14
View File
@@ -124,7 +124,7 @@ const LOKAL = "127.0.0.1:4371";
hier moeglich ist: die Entscheidung pruefen, nicht ihre Auswirkung.
===================================================================== */
console.log("\n--- Die Regeln selbst ---");
const { istCrewAdresse, istOhneModiAdresse, istWorkspacePfad, sitzungPasstZurAdresse, CREW_ADRESSE }
const { istCrewAdresse, istOhneModiAdresse, istWorkspacePfad, sitzungPasstZurAdresse }
= await import("./crew-adresse.js");
ok(istCrewAdresse(CREW) === true, "crew.dogfather-universe.com ist die Modi-Adresse");
@@ -214,13 +214,12 @@ const handAufCrew = await anmelden(CREW, "hand", "CODE-HAND-0001");
ok(handAufCrew.status === 200 && handAufCrew.keks.includes("dfw_sitzung"),
"crew.: die rechte Hand kommt herein");
/* Und sie kommt NICHT auf die andere Adresse -- genau wie ein Modi.
Sie bekommt dort denselben Hinweis auf die neue Adresse. */
/* Und sie kommt NICHT auf die andere Adresse -- genau wie ein Modi,
und mit genau derselben Antwort wie ein erfundener Code. */
const handAufWs = await anmelden(WS, "creator", "CODE-HAND-0001");
let zielHand = {};
try { zielHand = JSON.parse(handAufWs.text); } catch { /* bleibt leer */ }
ok(handAufWs.status === 200 && zielHand.weiter === `${CREW_ADRESSE}/workspace/start.html`,
"workspace.: die rechte Hand wird auf die neue Adresse verwiesen");
const erfunden2 = await anmelden(WS, "creator", "AUCH-DIESEN-NICHT-000");
ok(handAufWs.status === 401 && handAufWs.text === erfunden2.text,
`workspace.: die rechte Hand wird abgewiesen wie ein erfundener Code (${handAufWs.status})`);
ok(!handAufWs.keks.includes("dfw_sitzung"),
"workspace.: und bekommt dort keine Sitzung");
@@ -229,14 +228,25 @@ ok(!handAufWs.keks.includes("dfw_sitzung"),
const spicyAufCrew = await anmelden(CREW, "spicy", "CODE-DOGI-0001");
ok(spicyAufCrew.status === 401, "crew.: eine fremde Kachel gibt es dort nicht");
/* =====================================================================
DIE ALTE WAND SCHWEIGT (Entscheidung Filipe, 10.09.2026)
Vorher zeigte sie einem Modi den Weg zur neuen Adresse. Seine
Entscheidung: "gar nichts -- Code stimmt nicht."
GEPRUEFT WIRD NICHT DER STATUSCODE, SONDERN DIE UNUNTERSCHEIDBARKEIT.
Eine 401 waere leicht zu erfuellen und truege trotzdem eine Spur, wenn
der Rumpf, die Koepfe oder die Dauer anders aussaehen als bei einem
erfundenen Code. Deshalb wird beides nebeneinandergelegt und
verglichen -- Zeichen fuer Zeichen. */
const erfunden = await anmelden(WS, "creator", "DIESEN-CODE-GIBT-ES-NICHT");
const modiAufWs = await anmelden(WS, "creator", "CODE-MODI-0001");
ok(modiAufWs.status === 200, "workspace.: der Modi bekommt eine Antwort");
let zielWs = {};
try { zielWs = JSON.parse(modiAufWs.text); } catch { /* bleibt leer */ }
ok(zielWs.weiter === `${CREW_ADRESSE}/workspace/start.html`,
"workspace.: sie zeigt ihm die neue Adresse");
ok(!modiAufWs.keks.includes("dfw_sitzung"),
"workspace.: aber KEINE Sitzung -- er meldet sich nur noch auf crew. an");
ok(modiAufWs.status === erfunden.status && modiAufWs.status === 401,
`workspace.: der Modi-Code wird abgewiesen wie ein erfundener (${modiAufWs.status})`);
ok(modiAufWs.text === erfunden.text,
`workspace.: und die Antwort ist Zeichen fuer Zeichen dieselbe (${modiAufWs.text.slice(0, 40)})`);
ok(!modiAufWs.keks.includes("dfw_sitzung"), "workspace.: keine Sitzung");
ok(!/crew\./.test(modiAufWs.text), "workspace.: die neue Adresse wird nicht genannt");
/* DER WICHTIGSTE PUNKT DIESER DATEI. Derselbe Dienst bedient beide
Adressen; ein Denkfehler hier sperrt das ganze Team aus. */