Files
dogfather-universe/workspace/talente.html
T
DogFatherGitandClaude Opus 5 a7b5775268 Die Rechtetafel siebt die Karten jetzt wirklich -- und „ab Dabei" steht dran
ZWEI SACHEN, EINE DAVON EIN ECHTER BEFUND.

1) DIE KARTEN KAMEN AN DER RECHTETAFEL VORBEI
Der Bauplan sagt in Kapitel 04 und noch einmal in der Abnahme:
"Leite die sichtbaren Karten aus derselben Rechte-Tafel ab, die
rechte.html verwendet. Eine Rolle sieht nur Karten zu Seiten, die sie
oeffnen darf; pruefe das SERVERSEITIG."

Ich habe dafuer eine Pruefung geschrieben, die die Seite ueber die
ECHTE Schnittstelle sperrt (nicht mit einem UPDATE in der Datenbank --
nur so laeuft tafelLaden() mit). Sie wurde sofort rot: Nach dem Sperren
von bereich.html fuer einen Modi lieferte der Server weiterhin ALLE
ELF Bereichs-Karten.

Im Browser fiel das nicht auf, und das ist der heikle Teil: Die Seite
verbindet jede Karte mit einer Kachel, und die Kachelliste ist
gefiltert -- die Karten verschwanden also auf dem Bildschirm. Die
TEXTE gingen trotzdem hinaus. Eine Oberflaeche, die etwas nicht
anzeigt, ist keine Schranke; genau deshalb steht im Bauplan
"serverseitig".

Jetzt siebt `darfKarte()` an der Quelle. Der Pfad wird aus dem
Schluessel GERECHNET (`bereich:highlight` -> /workspace/bereich.html),
nicht aus einer Zuordnungsliste -- das ist die Umkehrung von
`schluesselVonZiel`, und eine gepflegte Tabelle daneben waere die, die
beim naechsten neuen Brett fehlt. Entschieden wird mit `darfSeite`
selbst; hier wird nichts davon nachgebaut.

Gegenprobe in derselben Pruefung: zuruecksperren -> die Karten sind
wieder da (29 von 29). Und eine Zeile dazwischen, die zaehlt, dass NUR
sie verschwunden sind -- waere mit der Sperre die halbe Anleitung
weggefallen, waere die erste Zeile auch gruen gewesen.

2) „AB DABEI" UND „AB STAMM" AN DER KARTE (Kapitel 04)
"Kann ein Community-Mitglied etwas wegen seiner Stufe noch nicht,
steht das an der Karte."

Auch das abgeleitet: aus TREFF_SCHREIBEN, derselben Tafel, die das
Schreiben ENTSCHEIDET. `null` darin heisst "von aussen schreibt hier
niemand" -- das ist keine Stufe, die man erreicht, und bekommt
deshalb keine Marke. "ab Stamm" an einem Anschlagbrett waere ein
Versprechen, das nie eingeloest wird.

Als Wort, nicht als Schloss-Symbol: Ein Schloss sagt "du darfst
nicht" und laesst offen, ob jemals. "ab Dabei" sagt, dass es kommt --
und wann, steht mit Datum in der Karte "Deine Stufe" darueber. Ruhig
gestaltet, nicht rot: Es ist keine Sperre, sondern eine Auskunft ueber
die Zeit.

GEPRUEFT (pruef-anleitung 166 -> 173)
Die wichtigste der neuen Zeilen ist die, dass die Marke nach dem
Aufstieg VERSCHWINDET. Eine Marke, die bleibt, ist schlimmer als
keine: Sie sagt jemandem, er duerfe etwas nicht, das er laengst darf,
und er probiert es gar nicht erst. Gemessen an drei Karten mit drei
verschiedenen Antworten (Chat: Dabei, Highlights: Stamm,
Anschlagbrett: gar nichts) -- waere die Rechnung grob falsch, traefe
sie alle drei gleich. Dazu die Gegenprobe, dass eine Teamrolle keine
einzige solche Marke bekommt.

Mitgelaufen: pruef-rechtetafel 19, pruef-rechte-umstellen 56,
pruef-css-klassen, pruef-tippziele 13 -- alle gruen. Die
Abnahmezahlen aus Kapitel 13 (14/29/29/34 mit ihrer Aufteilung) sind
nach dem neuen Sieb unveraendert; das ist der Beleg, dass es im
Normalfall nichts wegnimmt.

Im Browser nachgemessen (390 px, echte Anmeldung): Community sieht
vier Marken (Rudel-Chat, Wunschliste, Mitmachen „ab Dabei",
Highlights „ab Stamm"), die rechte Hand keine einzige.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-10-06 17:44:10 +02:00

126 lines
5.5 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!doctype html>
<html lang="de">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
<title>Talente · Spicy &amp; 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=202610061743" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610061743" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610061743" />
<link rel="stylesheet" href="assets/css/start.css?v=202610061743" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610061743" />
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202610061743" />
<!-- Wegen des Kastens „Anfragen“ ueber der Liste. Eine eigene Kopie
der Regel hier waere die zweite Stelle, an der dieselbe Sache
anders aussieht. -->
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202610061743" />
<link rel="stylesheet" href="assets/css/module.css?v=202610061743" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610061743" />
</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&nbsp;Dogi</a> · Talente</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 inhalt--breit">
<section class="kopf-zeile">
<div>
<p class="marke">Entwicklung &amp; Nachwuchs</p>
<h1 class="titel">Talente</h1>
<p class="unterzeile">
Zuschauer, die ins Team passen könnten. Ein Trichter, keine Liste –
jede Stufe hat genau einen nächsten Schritt.
</p>
</div>
</section>
<p class="fehler" id="fehler" role="alert" aria-live="polite"></p>
<!-- DIE ANFRAGEN GEHOEREN AN DEN ANFANG DIESES TRICHTERS.
Wer sich selbst meldet, ist ein Kandidat wie jeder andere -- nur
dass er die erste Frage ("besteht ueberhaupt Interesse?") schon
beantwortet hat. Deshalb steht der Weg dorthin auf DIESER Seite
und nicht als eigene Kachel daneben: Sonst waere aus einem Weg
zwei Seiten geworden, die man abwechselnd aufmacht.
Der Kasten steht ueber der Liste, weil eine unbeantwortete
Anfrage dringender ist als ein Kandidat, der seit Wochen
beobachtet wird. -->
<section id="anfragen-tor" class="bw-tor" hidden></section>
<!-- ==================================================================
HIER STEHEN NAMEN VON MENSCHEN, DIE NICHTS DAVON WISSEN.
Diese Seite gehört DogFather und der rechten Hand — sonst niemand,
keine Agentur, und ganz sicher nicht die Community. Durchgesetzt
wird das in der Rechtetafel UND in workspace-entwicklung.js; der
Satz hier ist nur die Erinnerung daran, warum.
Deshalb gibt es auch keine Rückmeldung an einen Kandidaten und
keinen heimlichen Test mit einem Zweitkonto. Wer beobachtet wird,
ohne es zu wissen, hat ein Recht darauf, dass daraus nichts
Öffentliches wird.
============================================================== -->
<!-- DER ZUGANGSCODE STEHT AUSSERHALB DER LISTE, und das ist kein
Schönheitsgrund. Die Liste wird nach jeder Änderung neu
gezeichnet – stünde der Kasten darin, wäre der Code in genau dem
Moment wieder weg, in dem er entsteht: wenn die Karte auf „Im
Team“ springt.
DERSELBEN KLASSEN WIE IN „PERSONEN & ZUGÄNGE“. Ein Geheimnis
sieht im ganzen Haus gleich aus – zwei Gestaltungen für dieselbe
Sache wären zwei Gelegenheiten, eine davon falsch zu machen. -->
<div class="code-kasten" id="code-kasten" hidden role="status" aria-live="polite">
<p class="code-kasten__schild">Zugangscode für <span id="code-name"></span></p>
<p class="code-kasten__code" id="code-wert"></p>
<p class="code-kasten__hinweis">
Dieser Code wird <strong>nur jetzt</strong> angezeigt und ist danach nicht mehr
abrufbar. Persönlich weitergeben und in Bitwarden ablegen.
</p>
<div class="t-text__knoepfe">
<button type="button" class="knopf knopf--klein" id="code-kopieren">Kopieren</button>
<button type="button" class="abmelden" id="code-schliessen">Verstanden, schließen</button>
</div>
</div>
<section id="trichter" class="t-trichter" aria-busy="true"></section>
<section id="liste" class="t-liste" aria-busy="true">
<p class="leise">wird geladen …</p>
</section>
</main>
<script src="assets/js/meldung.js?v=202610061743" defer></script>
<script src="assets/js/nachfrage.js?v=202610061743" defer></script>
<script src="assets/js/wahl.js?v=202610061743" defer></script>
<script src="assets/js/bereiche.js?v=202610061743" defer></script>
<script src="assets/js/installieren.js?v=202610061743" defer></script>
<script src="assets/js/kopf.js?v=202610061743" defer></script>
<script src="assets/js/glocke.js?v=202610061743" defer></script>
<script src="assets/js/holen.js?v=202610061743" defer></script>
<script src="assets/js/talente.js?v=202610061743" defer></script>
</body>
</html>