Ausgeloest von pruef-modi-wortleck, die seit Tagen rot war: "24
Fundstellen -- der verborgene Zugang waere damit auffindbar." Die
erste Frage war, ob sie recht hat. Gemessen: ja, und schlimmer als
gedacht.
WER DIESE DATEIEN BEKOMMT: Nicht nur Kollegen. `curl` ohne jeden Keks
auf workspace.dogfather-universe.com liefert die Skripte und
Stilvorlagen des Arbeitsplatzes mit HTTP 200 -- fuer jeden im Netz
lesbar.
DARUNTER crew-haus.css, 27 806 Byte, das ganze Farbhaus von Team Dogi
samt seiner Kommentare. In deren Kopf stand seit dem 10.09. woertlich
"Diese Datei wird NUR auf crew.dogfather-universe.com ausgeliefert."
Das war eine Behauptung, keine Tatsache: Die Weiche biegt `haus.css`
auf diesen Namen um, wer den Namen direkt nannte, ging an ihr vorbei.
Ein Kommentar, der eine Absicht beschreibt, erfuellt sie nicht.
Zwei Stellen im Haus haben sich damit widersprochen -- die Datei sagte
"nur auf crew.", pruef-crew-adresse verlangte ausdruecklich das
Gegenteil ("sie ist kein Geheimnis"). Durchgesetzt war die offene
Fassung. Filipe hat am 21.09. entschieden: zusperren. Die alte
Begruendung dagegen war die Sorge, eine Sperre koenne die Pruefung
blind machen -- die ist jetzt beantwortet statt vermieden: Jeder
Eintrag der Tafel wird in BEIDE Richtungen gemessen, und dass die
Umbiegung von `haus.css` auf crew. weiterhin greift, ebenfalls.
DIE ADRESSE WAR DAS EIGENTLICHE GEHEIMNIS, nicht das Wort. Die
Rollennamen stehen auf der Zugangswand von Team Dogi ohnehin offen --
so gewollt. WO sie liegt, stand dagegen im Klartext in gate.css,
gate.js und crew-haus.css, alle drei oeffentlich abrufbar. Jetzt steht
sie in keiner ausgelieferten Datei mehr.
DIE PRUEFUNG SELBST HATTE DREI MAENGEL:
1. Sie kannte die Mehrzahl nicht. `\bmodi\b` fand "ein Modi", nicht
"die Modis" -- 23 weitere Stellen, darunter der Satz "Fuer die
rechte Hand und die Modis gibt es dort den stillen Zugang". Also
genau die Auskunft, die sie verhindern soll, in der Form, die sie
nicht sah.
2. Ihre Ausnahmeliste war abgeschrieben. Sie nannte eine Datei; die
zweite, die der Server auf crew. begrenzt, haette sie nie
erfahren. Ausgenommen ist jetzt genau das, was der Server auch
durchsetzt (GEHOERT_ZU_ADRESSE) -- kein Muster, sondern die
Durchsetzung selbst.
3. Sie mahnte 45 Kommentare an. Filipes Entscheidung: in Kommentaren
ja, in Code und sichtbaren Texten nein. Rot, das immer da ist,
wird ueberlesen -- und dann faengt sie auch den echten Fall nicht.
Dafuer neu: helfer-ohne-kommentar.mjs, ein Zerleger, der Kommentare
zeichengenau durch Leerzeichen ersetzt, ohne Zeichenketten,
Vorlagen oder Suchmuster zu beschaedigen. KEIN Suchausdruck -- genau
daran ist am 20.09. die Portumstellung gescheitert, mit gueltigem
JavaScript ohne das Feld `port`. Dreizehn Proben in beide Richtungen
beweisen, dass er weder zu viel noch zu wenig wegnimmt; ein Zerleger,
der zu viel nimmt, macht die ganze Pruefung STILL gruen.
Von 45 blieben damit drei echte, alle behoben:
- daten.modis -> daten.leute (Feldname in der Auskunft, also Code)
- zwei Saetze, die Menschen lesen, auf "die Moderation" umgestellt --
fuer jemanden, der neu im Treff ist, sogar klarer
Nebenbei, beim selben Durchgang gefunden und geschlossen:
- teamlage.js fiel auf einen Rollennamen zurueck. Nachgemessen: Die
Stilvorlage kennt zu dieser Karte gar keine solche Regel -- der
Rueckfall hat nie etwas bewirkt und nur das Wort ausgeliefert.
- werdegang.js fuehrte die Saetze ueber den Rollengruppen selbst,
mit den Rollennamen als Schluessel. Der Kommentar daneben
behauptete sogar, sie seien "abgeleitet, nicht abgeschrieben".
Sie kommen jetzt vom Server, und pruef-werdegang misst, dass
jede Gruppe ihren eigenen behaelt.
pruef-modi-wortleck 8/0 (war 5, davon 1 rot)
pruef-crew-adresse 144/0 (war 135)
pruef-werdegang 98 statt 95 Pruefungen, dieselben 3 alten Fehler
pruef-team-ampel 32/0, pruef-team-stufen 28/0, pruef-hilfe 84/0
Co-Authored-By: Claude Opus 5 <[email protected]>
173 lines
7.8 KiB
HTML
173 lines
7.8 KiB
HTML
<!doctype html>
|
||
<html lang="de">
|
||
<head>
|
||
<meta charset="utf-8" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
||
<title>Wie geht's dir? · Spicy & Dogi</title>
|
||
<meta name="robots" content="noindex, nofollow" />
|
||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||
<meta name="theme-color" content="#06090f" />
|
||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609211259" />
|
||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211259" />
|
||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211259" />
|
||
<link rel="stylesheet" href="assets/css/start.css?v=202609211259" />
|
||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211259" />
|
||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609211259" />
|
||
<link rel="stylesheet" href="assets/css/module.css?v=202609211259" />
|
||
<link rel="stylesheet" href="assets/css/haus.css?v=202609211259" />
|
||
</head>
|
||
|
||
<body class="start">
|
||
|
||
<div class="schleier" aria-hidden="true"></div>
|
||
|
||
<header class="kopfleiste">
|
||
<button type="button" class="zurueck-knopf" id="zurueck" hidden>
|
||
<svg class="zurueck-knopf__pfeil" viewBox="0 0 24 24" aria-hidden="true">
|
||
<path d="M14.5 5.5 8 12l6.5 6.5" />
|
||
</svg>
|
||
<span class="zurueck-knopf__text">Zurück</span>
|
||
</button>
|
||
<p class="marke"><span class="marke__text"><a class="zurueck" href="start.html">Team Dogi</a> · Wie geht's dir?</span></p>
|
||
<div class="kopfleiste__rechts">
|
||
<span class="wer" id="wer">…</span>
|
||
<button type="button" class="abmelden" id="abmelden">Abmelden</button>
|
||
</div>
|
||
</header>
|
||
|
||
<main class="inhalt">
|
||
|
||
<!-- ==================================================================
|
||
DIESE SEITE GEHÖRT DEM MENSCHEN, DER SIE ÖFFNET.
|
||
|
||
Hier steht kein anderer Name, keine Beobachtung über jemanden und
|
||
keine Zahl, die jemand anders sieht. Genau das war der Grund für
|
||
die eigene Seite: Die Kachel verspricht „die Antworten sieht nur
|
||
du" – und führte vorher auf eine Seite voller anderer Leute.
|
||
|
||
Was DogFather sieht, ist eine einzige Zahl ohne Namen: wie viele
|
||
im Team es gerade schwer haben. Nicht wer, nicht womit.
|
||
============================================================== -->
|
||
|
||
<section class="kopf-zeile">
|
||
<div>
|
||
<p class="marke">Für dich</p>
|
||
<h1 class="titel">Wie geht's dir?</h1>
|
||
<!-- ================================================================
|
||
DIE EINE AUSNAHME GEHÖRT DAZU (ergänzt 19.09.2026).
|
||
|
||
Hier stand: „Niemand aus dem Team sieht deine Antworten – auch
|
||
DogFather nicht." Punkt. Das ist fast wahr und deshalb
|
||
gefährlich: Aus denselben Antworten entsteht eine Ampel für die
|
||
Leitung (workspace-entwicklung.js). Sie ist sauber gebaut – sie
|
||
nennt keine Namen, keinen Punkt, kein Datum, und unter drei
|
||
Personen schweigt sie ganz. Aber sie existiert.
|
||
|
||
Der ehrliche Satz war längst geschrieben und wurde vom Server
|
||
sogar mitgeliefert (`block.text`) – nur hat ihn nie jemand
|
||
angezeigt. Er steht jetzt hier im HTML und nicht im Skript:
|
||
Wer diese Seite öffnet, soll ihn lesen, BEVOR er tippt, nicht
|
||
nachdem ein Abruf zurückgekommen ist.
|
||
|
||
Wenn jemand später davon erfährt und die Seite hatte „niemand"
|
||
gesagt, ist das Vertrauen weg – und mit ihm die ganze Funktion.
|
||
============================================================= -->
|
||
<p class="unterzeile">
|
||
Ein paar Fragen über dich. Deine Antworten liest niemand – auch
|
||
DogFather nicht.
|
||
</p>
|
||
<p class="unterzeile unterzeile--zusatz">
|
||
Das Einzige, was nach außen dringt: ob es im Team gerade
|
||
<em>jemandem</em> zu viel ist. Ohne Namen, ohne Frage, ohne Datum –
|
||
und erst ab drei Personen im Team, weil es darunter dasselbe wäre
|
||
wie ein Name.
|
||
</p>
|
||
</div>
|
||
</section>
|
||
|
||
<p class="fehler" id="fehler" role="alert" aria-live="polite"></p>
|
||
|
||
<!-- Der Rhythmus. Steht VOR den Fragen: Wer hereinkommt, soll zuerst
|
||
wissen, ob gerade etwas von ihm erwartet wird. -->
|
||
<section class="b-takt" id="takt" hidden>
|
||
<p class="b-takt__satz" id="takt-satz">…</p>
|
||
<button type="button" class="knopf knopf--klein" id="takt-knopf" hidden>Runde abschließen</button>
|
||
</section>
|
||
|
||
<section id="fragen-block">
|
||
<div id="fragen" aria-busy="true"><p class="leise">wird geladen …</p></div>
|
||
</section>
|
||
|
||
<!-- ===================================================================
|
||
DIE EINE ZUSAMMENFASSUNG (20.09.2026)
|
||
|
||
Filipe: „am ende von allen fragen will ich eine gesamte
|
||
zusammenfassung, nicht bei jeder frage oder kategorie eine,
|
||
sondern EINE gesamte am ende. eine motivierende zusammenfassung
|
||
für die person."
|
||
|
||
SIE STEHT DIREKT UNTER DEN FRAGEN und über dem Verlauf. Das ist
|
||
Absicht: Sie handelt von dem, was man gerade angetippt hat —
|
||
Verlauf und Musteranalyse handeln von den Runden davor und
|
||
brauchen mindestens zwei. Diese hier gibt es beim ersten Mal.
|
||
|
||
GERECHNET HAT SIE DER SERVER (workspace-befinden-resuemee.js).
|
||
Dort steht auch, warum hier bewusst KEINE KI hängt: Das sind
|
||
Gesundheitsdaten, ein Sprachmodell erfindet, und ein fremder
|
||
Dienst fällt aus. Alle drei Gründe reichen einzeln.
|
||
=================================================================== -->
|
||
<section class="b-fazit" id="fazit-block" hidden aria-live="polite">
|
||
<h2 class="e-abschnitt">Was das zusammen heißt</h2>
|
||
<p class="b-fazit__kopf" id="fazit-kopf"></p>
|
||
<div class="b-fazit__traegt" id="fazit-traegt" hidden>
|
||
<p class="b-fazit__schild">Das trägt gerade</p>
|
||
<ul class="b-fazit__liste" id="fazit-traegt-liste"></ul>
|
||
</div>
|
||
<p class="b-fazit__thema" id="fazit-thema" hidden></p>
|
||
<p class="b-fazit__schluss" id="fazit-schluss"></p>
|
||
<p class="b-fazit__zahlen leise" id="fazit-zahlen"></p>
|
||
</section>
|
||
|
||
<!-- Der Verlauf. Nur für die Person selbst – er wird nirgends sonst
|
||
im Haus gelesen. Er steht unter den Fragen, weil er sie erklärt
|
||
und nicht ersetzt. -->
|
||
<section class="b-verlauf" id="verlauf-block" hidden>
|
||
<h2 class="e-abschnitt">Wie es sich entwickelt</h2>
|
||
<p class="b-verlauf__satz" id="verlauf-satz">…</p>
|
||
<div id="verlauf" class="b-verlauf__gitter"></div>
|
||
</section>
|
||
|
||
<!-- ==================================================================
|
||
WAS DEIN VERLAUF SAGT (15.09.2026)
|
||
|
||
Filipe: „mach mir auch eine analyse […] eine professionelle auch
|
||
mit infos und so aus aller welt was tiktok angeht."
|
||
|
||
Sie steht UNTER dem Verlauf: erst die Antworten, dann das Muster
|
||
darin. Andersherum läse man die Deutung, bevor man weiß, worauf
|
||
sie sich bezieht.
|
||
|
||
Sie wird gerechnet, nicht gespeichert – und sie bewertet nicht.
|
||
Keine Punktzahl über das eigene Befinden: Eine Zahl lädt dazu
|
||
ein, sie zu verbessern statt ehrlich zu antworten.
|
||
============================================================== -->
|
||
<section class="b-analyse" id="analyse-block" hidden>
|
||
<h2 class="e-abschnitt">Was dein Verlauf sagt</h2>
|
||
<p class="b-analyse__satz" id="analyse-satz">…</p>
|
||
<div id="analyse" class="b-analyse__liste"></div>
|
||
<p class="b-analyse__quelle" id="analyse-quelle"></p>
|
||
</section>
|
||
|
||
</main>
|
||
|
||
<script src="assets/js/meldung.js?v=202609211259" defer></script>
|
||
<script src="assets/js/nachfrage.js?v=202609211259" defer></script>
|
||
|
||
|
||
<script src="assets/js/wahl.js?v=202609211259" defer></script>
|
||
<script src="assets/js/bereiche.js?v=202609211259" defer></script>
|
||
<script src="assets/js/kopf.js?v=202609211259" defer></script>
|
||
<script src="assets/js/befinden.js?v=202609211259" defer></script>
|
||
</body>
|
||
</html>
|