diff --git a/server/pruef-verteilen.mjs b/server/pruef-verteilen.mjs
index a21577f2..78ac2d48 100644
--- a/server/pruef-verteilen.mjs
+++ b/server/pruef-verteilen.mjs
@@ -169,6 +169,78 @@ ok(vonModi.code === 201 && vonModi.verant === idModi,
`Gegenprobe: ein Modi kann es versuchen — die Aufgabe landet bei ihm selbst `
+ `(${vonModi.verant}, nicht ${idModi2})`);
+/* =======================================================================
+ DIE FELDER MUESSEN AUCH ZU SEHEN SEIN
+ =======================================================================
+
+ Filipe am 21.09.2026: "ich sehe noch immer nicht dass dogfather oder
+ die rechte hand wenn sie aufgaben verteilen die spezifisch an leute
+ verteilen können. mach das endlich auch weil das ist seeehr wichtig
+ damit wir arbeiten können mit den leuten."
+
+ ALLES DARUEBER WAR GRUEN -- und er hatte trotzdem recht. Der Server
+ nahm die Zuteilung an, die Rechte stimmten, die Leute standen in der
+ Auskunft. Nur die rechte Hand BEKAM DAS FELD NIE ZU SEHEN: Das
+ Absenden fragte `ich.darf_verteilen` (Server: Leitung ODER rechte
+ Hand), das Anzeigen eine andere Menge aus bereiche.js (spicy, admin,
+ manager). Zwei Bedingungen fuer dieselbe Sache, und eine davon
+ veraltet.
+
+ EINE PRUEFUNG, DIE NUR DEN SERVER FRAGT, FINDET SO ETWAS NIE. Sie
+ sieht eine Erlaubnis, die es gibt -- und uebersieht, dass niemand
+ an sie herankommt. Deshalb wird hier der Quelltext der Oberflaeche
+ mitgelesen: Es muss an BEIDEN Stellen dieselbe Frage stehen.
+ ======================================================================= */
+{
+ const { readFileSync } = await import("node:fs");
+ /* KOMMENTARE ZAEHLEN NICHT MIT.
+
+ Beim ersten Lauf meldete diese Pruefung fuenf Stellen -- zwei
+ davon waren mein eigener ERKLAERTEXT, in dem die alte Bedingung
+ woertlich zitiert steht. Eine Pruefung, die ihre eigene
+ Begruendung als Befund zaehlt, treibt einen dazu, die Begruendung
+ zu loeschen. Der Zerleger aus helfer-ohne-kommentar.mjs trennt
+ beides sauber. */
+ const { ohneKommentar } = await import("./helfer-ohne-kommentar.mjs");
+ const js = ohneKommentar(readFileSync(
+ new URL("../workspace/assets/js/aufgaben.js", import.meta.url), "utf8"), ".js");
+
+ /* Wie oft wird ueberhaupt entschieden, ob jemand verteilen darf? */
+ const mitServer = (js.match(/ich\.darf_verteilen/g) || []).length;
+ ok(mitServer >= 2,
+ `die Oberflaeche fragt ${mitServer}-mal den Server (darf_verteilen)`);
+
+ /* UND NIRGENDS MEHR ALLEIN DIE ROLLENMENGE. `LEITUNG.has(ich.rolle)`
+ darf nur noch als Rueckfall hinter `??` stehen -- also fuer den
+ Fall, dass eine aeltere Serverfassung das Feld gar nicht schickt.
+ Steht es irgendwo als eigene Bedingung, ist die zweite Wahrheit
+ zurueck. */
+ const ohneRueckfall = [...js.matchAll(/LEITUNG\.has\(ich\.rolle\)/g)]
+ .filter((m) => !/\?\?\s*$/.test(js.slice(Math.max(0, m.index - 24), m.index)));
+ ok(ohneRueckfall.length === 0,
+ ohneRueckfall.length
+ ? `${ohneRueckfall.length}-mal entscheidet die Rollenmenge allein -- `
+ + "der Server sagt es besser"
+ : "und nirgends entscheidet die Rollenmenge allein");
+
+ /* DIE BESCHRIFTUNG IST TEIL DER FUNKTION. "Verantwortlich" mit einem
+ Strich daneben liest sich wie eine Eigenschaft; gefunden hat
+ Filipe das Feld damit nicht. "Wer macht es?" ist eine Frage. */
+ const html = readFileSync(
+ new URL("../workspace/aufgaben.html", import.meta.url), "utf8");
+ const schilder = [...html.matchAll(/for="(?:f|b)-verant">([^<]+) m[1].trim());
+ ok(schilder.length === 2,
+ `beide Formulare haben das Feld (${schilder.length})`);
+ ok(schilder.every((t) => /wer\s+macht/i.test(t)),
+ `und beide fragen dasselbe ("${schilder.join('" / "')}")`);
+
+ /* Und der leere Wert sagt, was er bedeutet. Ein Strich ist kein
+ Zustand, sondern ein fehlendes Wort -- wer ihn sieht, weiss nicht,
+ ob er etwas versaeumt hat. */
+ ok(/— noch niemand —/.test(html),
+ "der leere Wert heisst „noch niemand“ und nicht nur „—“");
+}
+
console.log(`\n${fehler ? fehler + " FEHLER" : "Alles in Ordnung"} — ${geprueft} Prüfungen\n`);
try { rmSync(ordner, { recursive: true, force: true }); } catch { /* egal */ }
process.exit(fehler ? 1 : 0);
diff --git a/workspace/anruf-probe.html b/workspace/anruf-probe.html
index 9223dcd2..b460c072 100644
--- a/workspace/anruf-probe.html
+++ b/workspace/anruf-probe.html
@@ -16,15 +16,15 @@
verdeckt. Gefunden hat es pruef-struktur.
Richtig sind `gate.css` (die Farbwerte des Hauses) und `haus.css`. -->
-
-
+
+
-
+