28 Commits
Author SHA1 Message Date
DogFatherGitandClaude Opus 5 5d9c8cd377 Haustrennung: kein Eintrag mehr aus dem anderen Haus
Filipe, 24.09.2026: "wenn ich bei der einen was mache soll nichts bei
der anderen passieren." -- und heute: "ja los".

GEMESSEN, BEVOR ETWAS ANGEFASST WURDE (jedes Brett x beide Adressen x
vier Rollen):

  AGENTUR-Adresse   DogFather  18 Bretter
                    Manager     6 Bretter
                    Creator     6 Bretter
                    Modi        kommt nicht rein (401)
  CREW-Adresse      DogFather  18 Bretter
                    Modi       13 Bretter
                    Manager     kommt nicht rein (401)
                    Creator     kommt nicht rein (401)

Die Anmeldung war also dicht. Durch griff genau EINE Rolle: DogFather.
Er wohnt in beiden Haeusern, und die Riegel in sichtbarEintrag()
fragten nach der ROLLE, nicht nach der Adresse. Auf der Crew-Adresse
stand damit das Brett der Agentur samt Inhalt.

Nachgemessen ist der Durchgriff AELTER als der gestrige Eventkarten-
Umbau -- zweimal gemessen, mit und ohne ihn, gleiches Ergebnis.

RIEGEL 0 in sichtbarEintrag(): Wer auf einer Adresse angemeldet ist,
sieht nur Eintraege dieses Hauses. Er haengt den uebrigen Riegeln
UM, statt in jeden Ausgang geschrieben zu werden -- die Funktion hat
drei Rueckgabepunkte, und der naechste waere sonst wieder offen.

Nachher, dieselbe Messung: DogFather sieht auf der Agenturadresse nur
Agentur-Eintraege, auf der Crew-Adresse nur die des Rudels. Manager,
Creator und Modi unveraendert.

WAS DABEI SCHIEFGING UND WIE ES AUFFIEL

1. Die erste Fassung liess bei `haus IS NULL` den BEREICH entscheiden.
   pruef-haus-trennung.mjs wurde sofort rot: "Lunas Live vom Montag"
   verschwand von der Agenturadresse. `live`, `technik` und
   `community` tragen BEIDES -- die Kacheln von Team Dogi und die
   Creator-Akten. Eine Regel, die jedem Brett genau ein Haus zuweist,
   kann das nicht. Jetzt bleibt ein Eintrag ohne Haus sichtbar: ein
   Eintrag zu viel faellt auf, ein fehlender nicht.

2. Damit NULL kein Dauerloch ist: FUENF von ACHT Stellen, die
   Eintraege anlegen, setzten `haus` gar nicht (workspace-video.js,
   -content.js, -bewerbung.js, -treff.js, -vorlagen.js). Nachgetragen.

3. Und `person.haus` war dafuer der falsche Massstab: Legt DogFather
   ueber die Agenturadresse ein Highlight an, gehoert es trotzdem dem
   Rudel -- sonst sieht die Community es nie. pruef-treff.mjs hat das
   gefunden (2 Fehler). Neu: hausFuerNeuenEintrag() -- bei den sieben
   Brettern des Rudels entscheidet das BRETT, sonst die Adresse.

NEU: pruef-haus-luecke.mjs (12 Pruefungen). Sie sucht die
Einfuege-Stellen im Quelltext und wird rot, sobald eine neunte
dazukommt, die `haus` vergisst -- mit Gegenprobe, dass das Suchmuster
eine solche Stelle auch wirklich erkennt. Ein Kommentar daneben haette
es nicht verhindert; das steht so schon im Projektgedaechtnis.

NEBENBEI: In bereich.js stand seit gestern `|| "Agentur-Events"` als
Rueckfall fuer das Etikett der Vorschau. pruef-treff.mjs verbietet
das zu Recht -- wie ein Brett heisst, haengt am Haus, und der Server
sagt es. Der Rueckfall ist weg; fehlt die Angabe, steht lieber kein
Etikett da als ein falsches.

pruef-treff.mjs nachgezogen (85 -> 86 Pruefungen, nicht weniger): Die
Zusage "DogFather sieht den Beitrag" wird jetzt auf der Crew-Adresse
geprueft, mit Gegenprobe fuer die Agenturadresse.

GEPRUEFT, alle gruen:
  pruef-haus-luecke     12    pruef-haus-trennung  100
  pruef-crew-adresse   169    pruef-treff           86
  pruef-eventkarte      77    pruef-agentur         62
  pruef-haus-seiten     38    pruef-eintrag-bild    24
  pruef-vorlagen        24    pruef-video, -content, -bewerbung,
                              -bereiche-lesend: in Ordnung

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-10-03 23:33:03 +02:00
DogFatherGitandClaude Opus 5 f2f11e8091 Gelesene Antworten rutschen zur Seite -- statt sich zu stapeln
VanVan im Support, Meldung #15: „Die Modis können die Antworten auf
die Bewerbungen im Bereich eure Aufgaben noch nicht einklappen. Das
wird mit der Zeit unübersichtlich."

WARUM ES NICHT EINFACH EIN SCHALTER GEWORDEN IST

Am 30.09. habe ich diesen Kasten absichtlich NICHT einklappbar
gebaut, und die Begruendung steht woertlich im Quelltext: „Eine
Antwort, die man erst aufklappen muss, ist wieder keine." Sie ist
richtig -- fuer eine Antwort, die man noch nicht gelesen hat. Danach
ist sie falsch herum, und genau das meldet VanVan.

Ein Schalter, der alles wegklappt, haette die naechste Absage
mitversteckt: die Zeile, derentwegen der Kasten ueberhaupt
entstanden ist. Deshalb nicht „einklappbar", sondern GELESEN:

  · Was noch niemand quittiert hat, steht offen da -- wie bisher.
  · „Verstanden" schiebt eine Zeile hinter „N ältere Antworten",
    zugeklappt, jederzeit wieder aufzumachen. Nichts wird geloescht;
    eine Absage samt Begruendung wegzuwerfen, weil jemand sie einmal
    gelesen hat, waere das Gegenteil des Umbaus vom 30.09.
  · Ab zwei offenen Antworten gibt es „Alle N verstanden" -- wer nach
    dem Urlaub sieben vorfindet, soll nicht siebenmal tippen, und
    sieben Anfragen waeren sieben Gelegenheiten, dass eine verloren
    geht.

AM MENSCHEN, NICHT AM GERAET

`gesehen_am` steht in `vorlagen_bewerbungen`, nicht im
Browserspeicher. „Habe ich das gelesen?" ist eine Frage ueber die
Person: Sonst waere dieselbe Antwort auf dem Handy wieder neu,
nachdem man sie am Rechner gelesen hat -- und das waere genau die
Unuebersichtlichkeit, die gemeldet wurde, nur eine Tuer weiter.

Das AUFKLAPPEN der aelteren bleibt dagegen im Augenblick: kein
Zustand, den man mitschleppt. Nach dem Neuladen ist wieder zu.

GEGEN FREMDE ZEILEN GESCHUETZT: Nur die eigenen, nur die
beantworteten, 404 statt 403 -- wie ueberall im Haus. Ein zweites
„Verstanden" zaehlt nicht noch einmal, sonst wanderte die Zeile bei
jedem Klick ans Ende und man saehe nicht mehr, wann man sie wirklich
gelesen hat.

WAS ICH FALSCH ERWARTET HATTE: Meine erste Pruefung verlangte, dass
nach einem „Verstanden" OBEN NICHTS mehr steht. Sie wurde rot --
Frida hatte zwei Antworten, und der Knopf gilt je Zeile. Die
Pruefung hatte recht; dass er nur seine eigene Zeile nimmt, ist das
gewollte Verhalten und steht jetzt als Aussage dort.

NEBENBEI: Ein 11,2-px-Pfeil (gemeldet von pruef-css-klassen). Unter
11,5 px faengt im Haus die Grenze an, ab der man zusammenkneift --
dass es „nur ein Zeichen" ist, aendert daran nichts.

GEPRUEFT

  pruef-bewerbung-aufgaben  164 -> 178 ok
    Im echten Browser, am Handy (390 px): die ungelesene Antwort
    steht offen mit „Verstanden", danach ist genau diese eine Zeile
    weg (2 -> 1), sie liegt hinter „1 ältere Antwort", zugeklappt
    wird sie gar nicht erst gebaut, aufgeklappt steht sie samt
    Begruendung wieder da, „Alle verstanden" raeumt den Rest, nach
    dem Neuladen gilt beides weiter als gelesen und ist wieder zu.
    Am Server: fremde Antwort 404, erfundene Nummer 404, zweites
    „Verstanden" zaehlt 0.
  pruef-struktur 102 ok, 414 Routen (eine neue) ·
  pruef-css-klassen · pruef-zeichen 7 · pruef-modi-katalog 150 ·
  pruef-vorlagen 24 · pruef-aufgaben-vorlagen 60

NUR DAS AGENTURHAUS. „Eure Aufgaben" liegt unter `/workspace`; am
Crew-Haus aendert sich keine Zeile.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-10-03 00:10:15 +02:00
DogFatherGitandClaude Opus 5 018d02c3b8 Vorlagen anpassen: Frist, dauerhaft und eine Anmerkung
VanVan im Support, Meldung #6, zweite Haelfte -- der Rest, der heute
frueh ausdruecklich offen stehen blieb: „Bei den Vorlagen laesst sich
weder die Frist anpassen noch ‚dauerhaft' einstellen, und eine
Anmerkung fehlt auch."

EIN ZWEITER KNOPF, NICHT EIN FENSTER FUER ALLE

„An alle" verteilt zwoelf Aufgaben mit einem Druck. Haette jedes
Uebernehmen jetzt ein Fenster geoeffnet, waere der haeufige Weg
langsamer geworden, um den seltenen moeglich zu machen. Neben
„Uebernehmen" steht deshalb „Anpassen …" -- an den Creator-Vorlagen
und am Katalog, aus derselben Funktion.

DAS FENSTER IST DAS DES HAUSES

`frageNach` kann seit heute ein DATUM und einen HAKEN, die Anmerkung
konnte es als `grund` schon. Ein eigener kleiner Dialog in
vorlagenbrett.js waere der zweite im Haus gewesen -- und der, in dem
beim naechsten Mal Esc, Fokusfalle oder der Abbruch fehlen. Beide
Felder sind standardmaessig aus; fuer die dreissig anderen Aufrufe
aendert sich nichts.

DREI ENTSCHEIDUNGEN, DIE NICHT NAHELIEGEND WAREN

 1. DIE ANMERKUNG WIRD EINE NOTIZ (`aufgaben_notizen`), kein Anhang
    an der Beschreibung. Sie traegt damit, von wem sie stammt, und
    die Aufgabe zeigt sie ohnehin an. In die Beschreibung geschrieben
    waere sie von der Vorlage nicht mehr zu unterscheiden -- und
    dieselbe Vorlage haette beim naechsten Mal einen anderen Text.

 2. EINE DAUERHAFTE AUFGABE BEKOMMT KEINE FRIST, auch wenn eine
    mitgeschickt wird. Sie waere ab dem naechsten Tag fuer immer
    ueberfaellig, und eine Warnung, die immer kommt, ist keine mehr.
    Dieselbe Regel steht seit Langem im Aenderungsweg; haette sie
    hier gefehlt, gaebe es zwei Antworten auf dieselbe Frage.
    Im Fenster wird das Datum deshalb GRAU, sobald der Haken sitzt --
    ein Datum, das dasteht und nicht gilt, ist schlimmer als keins.

 3. „DAUERHAFT" DARF NUR, WER VERTEILEN DARF. Eine dauerhafte Aufgabe
    laesst sich nicht abhaken (Commit von heute frueh); wer sie sich
    selbst anlegen koennte, haette etwas, das er nie wieder loswird.
    Der Haken fehlt deshalb im Fenster eines Creators -- und
    abgelehnt wird trotzdem am Server, nicht nur ausgeblendet.

EIN FUND, DEN DIE PRUEFUNG GEMACHT HAT

`Number(tage) || 7` -- die Untergrenze des Datumsfeldes lag dadurch
sieben Tage in der Zukunft statt heute, weil Null in JavaScript
unwahr ist. Die VORGABE („in 1 Tag") lag damit UNTER der erlaubten
Grenze: Wer das Fenster oeffnete und einfach „Uebernehmen" drueckte,
bekam eine Absage. `Number.isFinite` fragt, ob eine Zahl da ist, und
nicht, ob sie wahr ist -- derselbe Unterschied wie bei `kill -0`.

NEBENBEI BEHOBEN: Ein gerades Anfuehrungszeichen in einem deutschen
Fehlersatz (gemeldet von pruef-struktur).

GEPRUEFT

  pruef-aufgaben-vorlagen   46 -> 60 ok
    eigene Frist kommt an (und die Vorlage saehe 5 Tage vor -- die
    Angabe hat also wirklich gewirkt), Anmerkung wird woertlich zur
    Notiz mit Namen, ohne Angabe bleibt alles wie bisher, Scout 403
    und es entsteht auch nichts, DogFather 200 und KEINE Frist,
    „morgen" 400, der 45.13. 400, Vergangenheit 400, und als
    Gegenprobe dieselbe Vorlage ohne Frist 200.
    Im Browser: der Knopf, das Fenster, die Vorgabe, kein Haken fuer
    einen Creator, die Aufgabe traegt danach genau die eingetragene
    Frist samt Notiz -- und Abbrechen legt nichts an.
  pruef-nachfrage           74 -> 89 ok
    Datum mit Vorgabe und Untergrenze, Haken 44 px hoch mit 22-px-
    Kaestchen (nicht ueber die ganze Zeile), Sperre und Gegenprobe,
    beide Schranken fuer ein zu fruehes Datum einzeln.
  pruef-struktur 102 · pruef-css-klassen · pruef-modi-katalog 150 ·
  pruef-aufgabenbrett · pruef-vorlagen 24 ·
  pruef-bewerbung-aufgaben 164 · pruef-zuteilung

NUR DAS AGENTURHAUS. Vorlagenbrett und Aufgaben liegen unter
`/workspace`; am Crew-Haus aendert sich keine Zeile.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-10-02 23:57:41 +02:00
DogFatherGitandClaude Opus 5 95c4599baa Anfuehrungszeichen: 199 falsche Schlusszeichen im sichtbaren Text
Deutsch oeffnet mit „ und schliesst mit “. An 199 Stellen, die ein
Mensch liest, stand als Schlusszeichen ein GERADES " -- „Nächstes"
statt „Nächstes“. Auf sechzehn oeffentlichen Seiten, in vierzig
Dateien des Workspace und in zwoelf Servermodulen, die Texte
verschicken.

Auf dem Bildschirm sieht man den Unterschied sofort. Beim Schreiben
nicht: Das gerade " liegt auf der Tastatur, die anderen nicht.

WARUM EIN ERSTER ANLAUF ZURUECKGENOMMEN WURDE

Ein gerades " ist an vielen Stellen SYNTAX und kein Schriftzeichen --
Grenze einer Zeichenkette, Grenze eines HTML-Attributs, Zeichen in
einem regulaeren Ausdruck. Wer stumpf ersetzt, macht aus

    „<a href="https://…                  ein kaputtes Attribut
    /^["'„»\s]+|["'“«.\s]+$/              einen kaputten Ausdruck
    "… nichts „mal " + "eben …"          eine kaputte Zeichenkette

DIE UNTERSCHEIDUNG LAEUFT AN MERKMALEN, NICHT AN EINER LISTE

  < > = dazwischen        -> HTML-Marke oder Attribut
  endet auf Leerzeichen   -> die Zeichenkette hoert hier auf, der
                             Satz geht in der naechsten Zeile weiter.
                             Ein deutsches Schlusszeichen steht NIE
                             hinter einem Leerzeichen.
  Rueckstrich mittendrin  -> regulaerer Ausdruck
  ${ ohne }               -> mitten in einem Ausdruck

Eine Liste erlaubter Ausnahmen waere die naechste, die niemand
pflegt. Zwoelf Stellen bleiben dadurch stehen, alle zwoelf einzeln
angesehen und alle zwoelf zu Recht -- dort steht das richtige
Schlusszeichen ohnehin weiter unten im Satz.

Fuenf davon waren allerdings ECHTE Fehler HINTER dem Link
(`…>HasiDog</a>".`) -- die erste Regel hatte nur das Attribut
gesehen, nicht den Satz danach. Gezielt nachgezogen.

Ein maskiertes `\"` in workspace-vorlagen.js (28 Hooks) wird zu “ --
ohne Rueckstrich, denn “ begrenzt nichts.

KOMMENTARE BLEIBEN, WIE SIE SIND. Dort liest es niemand ausser mir;
eine Wache, die auch Kosmetik anmahnt, wird weggeklickt. Beim ersten
Messen fielen ausserdem acht Stellen aus buehne.html faelschlich an,
weil `/* */` in HTML (in <style> und <script>) nicht ausgeblendet
war -- jetzt schon.

DIE WACHE DAZU

pruef-struktur prueft es ab sofort mit derselben Regel: 322 Dateien
mit sichtbarem Text, 0 Funde, und die zwoelf bewussten Ausnahmen
werden GEZAEHLT und genannt (erlaubt: 12). Eine Ausnahme, die niemand
sieht, waechst -- und irgendwann steht der echte Fall darin.

GEPRUEFT

  pruef-struktur   59 -> 68 Pruefungen, 0 Fehler
  node --check auf allen geaenderten JS-Dateien
  nachgemessen: 199 geaendert, 12 mit Grund stehen geblieben

  gruen geblieben: bewerbung-aufgaben 163, nachwuchs 262,
  reaktion 421, support 63, content 45, terminregel 35, treff 85

  Und nachgesehen, ob eine Pruefung noch die alte Schreibweise
  ERWARTET: 13 Fundstellen, alle dreizehn nur Text in ihrer eigenen
  Ausgabe, keine einzige ein Vergleich mit dem Seitentext.

GEGENPROBE: In reaktion.html ein Schlusszeichen zurueckgedreht ->
„workspace/reaktion.html:546 „Nächstes"", mit Datei und Zeile. Und
die Erkennung einzeln gegen HTML-Attribut, fortgesetzte
Zeichenkette, regulaeren Ausdruck und eingesetzten Wert geprueft.

Stempel gesetzt: workspace 670 Verweise in 45 Dateien, oeffentlich
554 in 48 Seiten.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-10-01 01:56:15 +02:00
DogFatherGitandClaude Opus 5 7dc5356c80 Datum: der Tag kommt aus der Ortszeit, nicht aus UTC
GEFUNDEN UM 01:22, von pruef-kreislauf -- und nur, weil nachts
gearbeitet wurde.

Die Pruefung legt einen Wunsch mit dem HEUTIGEN Datum an und macht
daraus einen Termin. Gemessen:

    geschickt:   datum = 2026-10-01   (heuteLokal auf dem Server)
    gespeichert: datum = 2026-09-30

Der Termin lag also in der Vergangenheit. Auf „Was ansteht" sortiert
er sich damit in den Abschnitt „Vorbei" ein -- und der ist mit
Absicht zugeklappt. Beim Wunsch stand „Daraus wurde ein Termin", auf
dem Brett war er nicht zu sehen. Zwei Stunden jede Nacht (im Winter
eine), genau in den Stunden, in denen hier gearbeitet wird.

URSACHE

    const jetzt = () => new Date().toISOString();   // UTC
    ... jetzt().slice(0, 10) ...                     // UTC-Tag

ES WAR NICHT EINE STELLE. Nachgemessen: SECHZEHN in vierzehn Modulen,
davon ZEHN, die den falschen Tag in die Datenbank schreiben --
Termine, Wuensche, Highlights, Talente, Leads, Videos, Vorlagen --
und sechs, die „heute" vergleichen (ueberfaellige Aufgaben, Berichte,
die Frist einer Entwicklungsaufgabe).

NICHT ANGEFASST, WEIL RICHTIG: Rechnungen auf einem Datumstext mit
fester Uhrzeit (`Date.parse(tag + "T12:00:00Z") + n * 86400000`). Die
bleiben in jeder Zeitzone am selben Kalendertag -- kalender, teamlage
und serien machen es so, und das bleibt.

WARUM ES NIEMAND GEMERKT HAT

pruef-struktur sucht dieses Muster seit dem 06.09.2026. Aber:
  - sie sah NUR in die `pruef-*.mjs`, nie in die Anwendung
  - sie kannte die Schreibweise ueber eine FUNKTION nicht
    (`const jetzt = () => ...` statt `const jetzt = ...`)

Die Wache stand vor den Pruefungen, nicht vor dem Haus -- derselbe
Fehler wie heute Nacht bei den Messports: eine Sicherung, die nur die
halbe Menge kennt, faellt in der anderen Haelfte aus, und zwar
lautlos, denn sie meldet ja „nichts gefunden".

Jetzt sieht sie in beides und kennt beide Schreibweisen. Beim ersten
scharfen Lauf fand sie sofort 23 weitere Stellen in den Pruefdateien
selbst -- dieselben Zeitbomben, gegen die sie gebaut worden war.

EINE ZWEITE WACHE, WEIL ICH SELBST HINEINGELAUFEN BIN

Mein Umbauwerkzeug hat in elf Modulen `heuteLokal()` eingesetzt und
die Einfuhr weggelassen: Es hat erst ersetzt und DANN gefragt, ob der
Name schon in der Datei steht -- da stand er, mein eigener Aufruf.
`node --check` sagt dazu nichts, „Laedt jedes Server-Modul?" auch
nicht: Die Datei ist syntaktisch tadellos. Erst der Aufruf faellt um
mit `ReferenceError: heuteLokal is not defined`. Gefunden hat es
pruef-video, zufaellig. Die anderen zehn waeren durchgerutscht.

Deshalb neu: „Ruft ein Modul etwas, das es nie eingefuehrt hat?" --
die Namen des Hauses aus den export-Zeilen gelesen, nicht
aufgezaehlt. 460 Aufrufe in 350 Dateien, alle mit Einfuhr.

pruef-kreislauf STELLT JETZT DIE RICHTIGE FRAGE

Sie war rot und hat den Fehler dabei nur gestreift: „`.kette` wird
nicht sichtbar", Zeitsperre nach 15 s. Das klingt nach der Anzeige
und schickt einen zur falschen Stelle. Neu:
  - eine Zeile fragt das DATUM (ohne Browser, nennt den Fehler beim
    Namen)
  - der Browserteil klappt zu, was zu ist, und misst dann die Kette;
    „gar nicht da" wird von „da und unsichtbar" unterschieden

NEBENBEFUND IN pruef-ics

Die Probe „fast richtig" war `echt.slice(0, -1) + "A"`. Der
Schluessel ist base64url; sein letztes Zeichen ist eines von
sechzehn. Endet er auf „A", IST die Probe der echte Schluessel, der
Server antwortet zu Recht mit 200, und die Pruefung meldet ein Loch,
das es nicht gibt -- einmal je sechzehn Laeufe. Heute Nacht zweimal
hintereinander, und die Suche ging eine halbe Stunde in eine
Aenderung, die damit nichts zu tun hatte.

GEPRUEFT

  pruef-struktur   44 -> 59 Pruefungen, 0 Fehler
  pruef-ics        37 -> 38, 0 Fehler
  pruef-kreislauf  Absturz bei Nr. 17 -> 25 Pruefungen, 0 Fehler

  und gruen geblieben: treff 85, arten 28, video 74, uebernahme 39,
  entwicklung 79, content 45, vorlagen 24, zuteilung 75,
  scout-zuteilung 37, unterstuetzung 70, aufbewahrung 45,
  bewerbung 91, treff-start 42, uebergang 65, nachwuchs 262,
  auskunft 46, modi-ideen 30, neue-seiten 109, spicy 85,
  wege-nach-draussen 67, aufgabenbrett 49, agentur 62,
  bereiche-lesend 37 -- beide Haeuser

GEGENPROBEN, DIE WIRKLICH ROT WERDEN

  - den UTC-Tag im `daraus`-Weg wieder eingebaut: pruef-kreislauf
    meldet „er liegt HEUTE, nicht gestern (2026-09-30, heute ist
    2026-10-01)", 25 Pruefungen, 1 Fehler -- und der Browserteil
    bleibt gruen, weil er jetzt aufklappt. Jede Frage bei ihrer
    eigenen Pruefung.
  - eine Einfuhr aus workspace-video.js entfernt: die neue Wache
    meldet „workspace-video.js: heuteLokal() (aus helfer-tag.mjs)"
  - beide Erkennungen je gegen einen gebauten Rueckschritt geprueft
    (Funktion, Variable, zwei Schritte, Date.now-Rechnung) und gegen
    das, was NICHT anschlagen darf (UTC-Mittag, voller Zeitstempel,
    fremdes Date, Name im Kommentar, Eigenschaft am Objekt)

EIN FEHLER BEIM UMBAU, HIER FESTGEHALTEN: Mein erster Lauf ueber die
Pruefdateien hat stumpf ersetzt und dabei KOMMENTARE umgeschrieben --
in sieben Dateien stand die alte Schreibweise als Beleg in der
Begruendung, und daraus wurde das Gegenteil. Bemerkt hat es der
Vergleich der Zahlen (34 Stellen statt der gemessenen 24), nicht die
Absicht. Zurueckgenommen und mit Schutz fuer Kommentare und
Zeichenketten wiederholt.

Datenbank vorher gesichert. Keine Schemaaenderung.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-10-01 01:45:16 +02:00
DogFatherGitandClaude Opus 5 5e26df788b Bewerbungen: die Absage bleibt lesbar, und ihr seht, was ihr absagt
VanVan im Support: „Wenn sich ein Modi auf eine Aufgabe bewirbt und
man diese ablehnt, dann bekommt der Modi keine Benachrichtigung
darüber, dass die Aufgabe abgelehnt wurde und sieht somit auch eine
eventuelle Begründung nicht. Außerdem haben auch wir nirgendwo eine
Übersicht, bei wem wir welche Aufgaben schon abgelehnt haben."

GEMESSEN, BEVOR GEBAUT WURDE -- die Pruefungen standen zuerst da und
waren rot:

    Frida sieht ihre beantwortete Bewerbung     0
    Die Leitung sieht die Absagen               0

DIE URSACHE. `vorlagenBewerbungenFuer` fragt `WHERE zustand =
'beworben'`. Sobald jemand antwortet, faellt die Zeile aus JEDER
Ansicht heraus -- mitsamt der Begruendung, die Filipe am 23.09.
ausdruecklich verlangt hat („mit einem text als notiz"). Der Satz
wird also verlangt, geschrieben und weggesperrt.

Bei einer ZUSAGE fiel das nicht auf: Dort entsteht eine Aufgabe, und
an ihrer Karte steht die Antwort. Bei einer ABSAGE entsteht nichts.

Die Benachrichtigung selbst gab es (`bewerbung_antwort`, vorgabe an,
fuer ja und nein). Sie war nur das EINZIGE -- wer sie wegwischt oder
kein Geraet angemeldet hat, erfuhr nie, warum.

WAS JETZT DASTEHT

* BEIM BEWERBER: „Antwort auf deine Bewerbung" mit dem Ergebnis, dem
  Satz und dem Namen dessen, der geantwortet hat. Beide Ausgaenge --
  eine Liste, die nur Absagen sammelt, waere eine andere Sache. Nach
  14 Tagen verschwindet sie von selbst.

  SIE STEHT VOR DEM ZUKLAPPEN. Beim ersten Anlauf lag sie im Koerper
  des Vorlagenbretts, und der wird nur gebaut, wenn das Brett
  aufgeklappt ist -- zugeklappt ist die Vorgabe. Eine Antwort, die
  man erst aufklappen muss, ist wieder keine.

* BEI DER LEITUNG: „Schon abgesagt", 90 Tage, mit der Zahl JE MENSCH
  vorn. Das ist VanVans eigentliche Frage („falls sich jemand immer
  wieder bewirbt und immer wieder abgelehnt wird"), und die
  beantwortet eine Liste von zwanzig Zeilen nicht.

  AUS BEIDEN WEGEN -- Vorlage und Aufgabe. Eine Uebersicht, die nur
  die Haelfte zeigt, ist schlimmer als keine: „Frida wurde nie
  abgelehnt" waere dann eine Auskunft, die stimmt und taeuscht.

  ZUGEKLAPPT. Eine Liste von Absagen, die immer offen steht, ist eine
  Sammlung von Nein-Sagen ueber Menschen, mit denen man morgen wieder
  arbeitet.

  KEIN ROT. Eine Absage ist kein Fehler; „diesmal nicht" ist keine
  Aussage ueber den Menschen. Gedeckter Bernstein, und ab zwei Malen
  faellt die ZAHL auf -- nicht nur die Farbe.

ZWEI EIGENE FELDER UND NICHT `bewerbungen` ERWEITERT. Dort heisst
eine Zeile im Browser „wartet auf Antwort", samt Zurueckziehen-Knopf.
Beantwortete Zeilen hineinzumischen haette bei einer Absage genau das
gezeigt. Ein Feld, dessen Bedeutung sich aendert, bricht seine Leser
lautlos.

`entschieden_von IS NOT NULL` TRENNT DREI DINGE, die alle `abgelehnt`
heissen: die Leitung hat eine Bewerbung abgelehnt (das hier), die
Person hat eine Zuteilung abgelehnt (ihre Entscheidung), und „von
jemand anderem uebernommen" (gar keine Absage).

Haustrennung gilt: `darfSchreibenMit` je Zeile.

GEPRUEFT
pruef-bewerbung-aufgaben 144/0 (weitere 10 Pruefungen plus zwei
Bilder). Die Gegenprobe steht in der Vorgeschichte: Dieselben
Pruefungen waren vor dem Bau rot.

Zwei eigene Messfehler, beide im Text festgehalten: Ich habe zuerst
auf dem AUFGABENbrett gemessen -- der Vorlagenkatalog steht aber auf
„Eure Aufgaben" (`zweig: 'team'`). Und `innerText` liefert den Text
so, wie er DASTEHT: Die Zeile suchte „Diesmal nicht" und fand
„DIESMAL NICHT", weil das Schild `text-transform: uppercase` traegt.

pruef-vorlagen 24/0, pruef-aufgaben-vorlagen, pruef-zuteilung,
pruef-aufgabenbrett, pruef-entwicklung 79/0, pruef-css-klassen,
pruef-zwischenspeicher 34/0.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-30 18:34:24 +02:00
DogFatherGitandClaude Opus 5 c933bcd2e0 Aufgaben: wer verantwortlich ist, hat auch eine Zuteilung
VanVan im Support: „Wenn ein Modi sich auf eine Aufgabe beworben hat
und die von uns angenommen wurde, dann steht beim Modi unter der
Aufgabe immer noch ich bewerbe mich."

GEMESSEN AN DEN ECHTEN DATEN (lesend, auf einer Kopie):

    Aufgaben mit Verantwortlichem:     11
    davon OHNE Zuteilungszeile:         8

Darunter Marinas zwei offene Vorlagen-Aufgaben -- genau die zwei
Karten aus ihrem Bildschirmfoto.

DIE URSACHE. `katalogAufgabeAnlegen()` schrieb eine Zeile in
`aufgaben` mit `verantwortlich_id` und KEINE in
`aufgaben_zuteilung`. Das Brett liest aber die Zuteilung, nicht den
Verantwortlichen: Es fand nichts, lieferte `meine_zuteilung: null`,
und die Bedingung im Browser beginnt mit `!mein` -- also bot sie an,
sich auf die eigene Aufgabe zu bewerben.

ES WAR NICHT NUR EIN FALSCHER KNOPF. „Ich fange an" und „Fertig"
haengen an derselben Zeile. Der Mensch bekam eine Karte, auf der er
das Falsche tun konnte und das Richtige nicht.

WARUM DIE VORHANDENE PRUEFUNG ES NICHT FAND: Sie geht den Weg ueber
das AUFGABENbrett -- dort war alles in Ordnung, nachgemessen steht
nach dem Annehmen richtig „Ich fange an | Fertig". VanVans Weg ist
der ueber das VORLAGENbrett, und der endet in einer neu angelegten
Aufgabe. Dieser Weg war nie geprueft.

DREI TEILE

1. `katalogAufgabeAnlegen` legt die Zuteilungszeile mit an. Mit
   Zustand: `angenommen`, wenn die Person darum gebeten hat und die
   Bitte angenommen wurde; `offen`, wenn die Leitung zutraegt -- dann
   steht bei ihr Annehmen/Ablehnen, und das ist richtig, sie hat noch
   nicht ja gesagt.

2. Eine Umstellung traegt nach, was schon dasteht. Wiederholbar
   (`NOT EXISTS` + `INSERT OR IGNORE`), deshalb bei den Umstellungen
   und nicht in einem Skript, das jemand vergisst. Auf einer KOPIE
   der echten Datenbank durchgespielt: 8 Zeilen angelegt, danach 0
   ohne Zuteilung, `integrity_check ok`. Marinas Karten stehen
   danach auf `angenommen`.

3. Ein Riegel im Browser: Auf eine Aufgabe, die mir schon gehoert,
   bewirbt man sich nicht. Er faengt jeden weiteren Weg ab, der eine
   Aufgabe ohne Zuteilungszeile anlegt -- nicht alle acht kamen aus
   der Vorlage.

GEPRUEFT
pruef-bewerbung-aufgaben 126/0 (15 neue: der ganze Vorlagenweg von
der Bewerbung bis zum Knopf auf ihrem Brett). NACHGESTELLT: Ohne die
Zuteilungszeile wird sie rot („und sie hat eine Zuteilungszeile
(undefined)"). pruef-zuteilung, pruef-aufgabenbrett, pruef-vorlagen
24/0, pruef-aufgaben-vorlagen, pruef-struktur, pruef-zwischenspeicher
34/0.

Ein Messfehler unterwegs, im Text festgehalten: Mein neuer Block
bewarb sich auf dieselbe Vorlage wie ein spaeterer Abschnitt und
nahm ihm damit seine -- zehn Pruefungen wurden rot, ohne dass am
Programm etwas falsch war.

Datenbank vor der Umstellung gesichert und geprueft
(integrity_check ok, 12 Aufgaben, 3 Zuteilungen).

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-30 18:08:36 +02:00
DogFatherGitandClaude Opus 5 8bf2f440d0 Bewerbungen der Modis bekommen eine eigene Spalte im Aufgabenbrett
Filipe: "ich will in dieser seite auch eine eigene kategorie fuer die
aufgaben wo die modis sich selbst bewerben. ich will dass man die
getrennt sieht. mach es richtig uebersichtlich."

WO SIE VORHER STANDEN, und warum das nicht reichte: nur auf dem
Vorlagenbrett, an der jeweiligen Karte. Das ist der richtige Ort zum
ENTSCHEIDEN -- man liest Aufgabe und Name nebeneinander. Es ist der
falsche Ort zum SEHEN: Wer morgens das Aufgabenbrett oeffnet, sieht
nicht, dass drei Leute auf eine Antwort warten, und das Vorlagenbrett
ist eine Seite weiter. Fuer den Modi gab es ueberhaupt keine Stelle,
an der stand "dein Wunsch ist angekommen".

DIE SPALTE STEHT GANZ VORN. Sie ist die einzige, in der jemand auf eine
ANTWORT wartet -- alle anderen zeigen Arbeit, die laeuft. Und sie
VERSCHWINDET, wenn nichts wartet: Eine leere Spalte "Bewerbungen"
stuende 360 Tage im Jahr im Weg, um an fuenf Tagen etwas zu sagen. Die
vier festen Spalten haben auch leer eine Aussage ("hier landet, was
fertig ist"); diese nicht.

WAS AUF DER KARTE STEHT: der TITEL der Vorlage (nicht ihr Schluessel),
wer sie uebernehmen moechte, und sein eigener Satz dazu -- als Zitat
gesetzt, mit Strich davor. Er gehoert ihm, nicht dem Brett. Ohne ihn
entscheidet man ueber einen Namen.

DER TITEL WIRD NACHGESCHLAGEN, NICHT MITGESPEICHERT. Er gehoert dem
Katalog; stuende er in der Bewerbungszeile, gaebe es zwei Wahrheiten,
und die aeltere gewinnt still, sobald jemand eine Vorlage umbenennt.

EIN EIGENER, KLEINER WEG statt eines Mitschleppens:
`/workspace/api/vorlagen/bewerbungen` liefert nur die Bewerbungen --
nicht den ganzen Katalog, der an `/workspace/api/vorlagen` haengt. Das
Brett zeichnet sich bei jedem Statuswechsel neu; der Katalog ist um ein
Vielfaches groesser als die Handvoll Bewerbungen.

WER ENTSCHEIDEN DARF, SAGT DER SERVER (`darf_entscheiden`) -- nicht der
Rollenname im Browser. `assets/js` bekommt jeder, der die Seite
oeffnet, und ein Rollenvergleich dort ist in diesem Haus allein diese
Woche dreimal veraltet. Bis die Antwort da ist, gilt `false`: lieber
einen Knopf zu spaet zeigen als einen, der eine Absage holt.

DIE FARBE IST NEU IM BRETT. Die vier vorhandenen stehen fuer einen
Arbeitsstand (grau, blau, gelb, gruen); hier wartet niemand auf Arbeit,
sondern auf eine Entscheidung. Kein Rot ("kaputt"), kein Gelb (heisst
schon "zur Freigabe") -- Violett, das im Chat seit gestern fuer "an
dich gerichtet" steht. Eine Sprache im Haus.

Geprueft: pruef-bewerbung-aufgaben 101 -> 111 Punkte. Darunter die drei
Gegenproben, ohne die "die Spalte ist da" nichts bewiese: ohne
Bewerbung gibt es sie NICHT, der Modi bekommt KEINE
Entscheidungsknoepfe (sondern "wartet auf Antwort"), und die Spalte
steht wirklich an erster Stelle. Dazu pruef-aufgabenbrett und
pruef-vorlagen (24), beide unveraendert gruen.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-25 03:29:33 +02:00
DogFatherGitandClaude Opus 5 40b48e89f1 Bei "An alle" sieht man jetzt, wer sie hat und wer nicht
Filipe: "wenn ich eine aufgabe an alle verteile will ich dass dogfather
und die rechte hand individuel von jedem sehen wer es gemacht hat oder
nicht."

Vier Fehler, die zusammenhingen -- alle gemessen, keiner geraten:

1. "Alle" waehlen, "An alle" druecken, nichts passiert. Die Zeile
   verglich verantwortlich_id !== "alle"; niemand heisst so, also wurde
   jede Aufgabe uebersprungen und die Liste blieb leer. Die Aufgaben
   entstanden, man sah es nur nicht.

2. Der Vermerk an der Karte haette bei "alle" den Stand EINER fremden
   Person gezeigt -- welcher, haengt von der Reihenfolge der Daten ab.
   Jetzt steht dort, wie weit es ist, und darunter namentlich, wer sie
   hat: Offen / Erledigt / ueberfaellig / hat sie nicht. Das Wort steht
   immer dabei, die Farbe ist nur die Abkuerzung.

3. Die "An wen"-Reihe zeigte SECHS Personen, der Server belieferte VIER.
   Rechte und linke Hand gingen leer aus, ohne ein Wort; einzeln
   angeschrieben kam "Das gibt es nicht mehr, lade die Seite neu" zu
   jemandem, den es sehr wohl gibt. Empfaenger sind jetzt Modis UND
   linke Hand (Filipes Regel vom 22.09.), und die Menge steht EINMAL in
   workspace.js -- SQL-Abfrage, Annahme und Browserliste leiten sich
   daraus ab und koennen nicht mehr auseinanderlaufen.

4. Zweimal "An alle" legte alles doppelt an. Der Kommentar im Server
   behauptete das Gegenteil; aktiv war die Sperre nur beim Massenknopf.
   "An alle" fuellt jetzt Luecken. Die bewusste Wiederholung bleibt:
   Steht am Knopf "Nochmal" (weil wirklich alle sie haben), sagt der
   Browser das ausdruecklich, und dann legt der Server neu an.

Geprueft: pruef-modi-katalog 144 statt 133, 0 Fehler -- elf neue
Pruefungen fuer Empfaenger, Luecken und die Gegenprobe, dass ein
gewolltes "Nochmal" sehr wohl anlegt. Dazu mess-alle-einzelsicht.mjs
(eigene Wegwerf-Datenbank, nie die echte) mit Bildern bei 412 und
1280 px.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-24 17:26:35 +02:00
DogFatherGitandClaude Opus 5 8c599d7961 „An alle" bei „An wen" – und kein Creator mehr auf der Team-Seite
=== screen6: „An alle" ===

Filipe: „bei an ween fehlt noch die option alle neben den namen
allen."

Der Knopf steht VORN, nicht hinten: Wer etwas an das ganze Team geben
will, soll nicht erst an sechs Namen vorbeilesen. Er traegt die
Anzahl der Leute und faerbt sich wie die Stufe „Alle" -- beide
bedeuten „keine Einschraenkung", und zwei Farben dafuer waeren zwei
Aussagen fuer einen Gedanken. Ab zwei Personen; bei einer waere
„alle" derselbe Handgriff wie ihr Name.

EINE ANFRAGE, NICHT SECHS. Der Browser koennte fuer jede Person
einzeln fragen -- und beim dritten von sechs Aufrufen die Verbindung
verlieren. Dann haette die Haelfte des Teams die Aufgabe und die
andere nicht, und niemand saehe, wo es abgebrochen ist.

DER DUPLIKAT-SCHUTZ WANDERTE IN DIE SCHLEIFE. Er fragt, was EINE
Person schon liegen hat; stuende er davor, bekaeme nur die erste ihre
Pruefung und alle anderen die Vorlage doppelt -- genau so entstanden
am 22.09. aus zwei Klicks 112 Aufgaben. Gemessen: erster Klick 36
Aufgaben (12 mal 3 Modis), zweiter Klick 0 angelegt und 36
uebersprungen.

Ein gesperrter Modi bekommt nichts, ein Creator auch nicht, und wer
gar nicht verteilen darf, kommt ueber „alle" ebenfalls nicht weiter.

=== screen4: kein anderer Creator ===

Filipe: „in dieser app gibt es keinen und wird es niemals einen
anderen creator geben wie mich."

Auf der Aufgabenseite war eine Filterreihe mit „Alle Creator"
beschriftet -- und darunter standen Modis. Auf der Team-Adresse gibt
es keine Creator und wird es nie geben. Sie heisst dort jetzt „Für
wen".

DAS HAUS KOMMT VOM SERVER. `/api/ich` schickt jetzt `haus`; es stand
schon an der Sitzung und wurde nie mitgeschickt. Eine Rollenliste im
Browser waere die naechste zweite Wahrheit -- und falsch fuer
DogFather, der in beiden Haeusern arbeitet.

NEUN WEITERE „BEFUNDE" WAREN MEINE MESSFEHLER. Meine erste Messung
lief ueber 127.0.0.1 und meldete unter anderem „CREATOR WORKSPACE" in
der Kopfleiste JEDER Seite. Auf der echten Adresse steht dort „Team
Dogi" -- `person.haus` wird aus dem Host abgeleitet, und auf
127.0.0.1 ist das Haus nun einmal die Agentur. Nachgemessen mit
gesetztem Host: crew. -> haus="crew", marke="Team Dogi". Die
Uebersichtsseite mit ihren Creator-Texten steht auf crew. gar nicht
erst in den Kacheln.

Gemessen: pruef-an-alle, 19 Pruefungen, 0 Fehler. Gruen:
pruef-aufgabenbrett, pruef-aufgaben-vorlagen, pruef-vorlagen,
pruef-entwicklung (48), pruef-css-klassen.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-24 11:27:10 +02:00
DogFatherGitandClaude Opus 5 4454c6d064 Ein zweiter Druck legt nichts mehr doppelt an
Filipe: "diese aufgaben die da alle verteilt wurde, die hab ich nicht
gemacht also sollen die alle da weg, keine ahnung was du da gemacht
hast."

WAS WIRKLICH PASSIERT IST, steht in der Datenbank:

  2026-09-22T16:05:24   35 Aufgaben
  2026-09-22T16:05:25   21 Aufgaben
  2026-09-22T16:05:53   56 Aufgaben

Zweimal "Alle uebernehmen", 29 Sekunden auseinander, von Ghost. 112
Aufgaben an vier Modis -- 14 Vorlagen, jede doppelt, je 28 pro Person.
Alle noch offen, keine einzige angefasst.

Der eine Weg dorthin ist seit dem 22.09. zu: Ein Modi darf nicht mehr
verteilen (darfAufgabenVerteilen). Der andere war offen -- der zweite
Druck selbst. Wer verteilen darf, konnte den Massenknopf beliebig oft
betaetigen, und nichts hat ihn aufgehalten.

DIE SPERRE GAB ES IM HAUS SCHON, im Termin-Zweig derselben Route: "Was
es schon gibt, wird nicht doppelt angelegt." Beim Massenknopf fehlte
sie. Dass sie fehlte, ist nicht aufgefallen, weil niemand zweimal
drueckt -- bis es jemand tat.

NUR DER MASSENKNOPF, NICHT DER EINZELNE. Ein "Nochmal" an einer Karte
ist eine bewusste Entscheidung; manches macht man jede Woche neu, und
der Knopf sagt es sogar. Ein Griff, der zwoelf Aufgaben auf einmal
holt, ist etwas anderes: Ob er schon gedrueckt wurde, sieht man ihm
nicht an, und beim zweiten Mal richtet er zwoelffachen Schaden an.

UND "OFFEN" HEISST OFFEN. Was erledigt oder abgebrochen ist, darf
wiederkommen -- sonst liesse sich eine woechentliche Aufgabe nach dem
ersten Abhaken nie wieder holen. Gefragt wird nicht "gab es die schon
mal", sondern "liegt die gerade noch da".

Die Oberflaeche sagt es jetzt auch: "3 uebernommen. 9 lagen schon
offen da - die kommen nicht doppelt." In Gruen, nicht in Rot: Das ist
keine Stoerung, sondern die Auskunft, dass die Sperre gegriffen hat.
Ein Knopf, der weniger tut als er verspricht UND schweigt, ist
schlimmer als einer, der zu viel tut -- man drueckt ihn noch einmal.

Gemessen am nachgestellten Vorfall: erster Druck 12 Aufgaben, zweiter
Druck 0 statt 12 (waeren 24 geworden). Gegenproben: Abgehaktes laesst
sich neu holen, und der einzelne Nochmal-Knopf legt weiter an.
12 Messungen, 0 Befunde. pruef-modi-katalog 129 und
pruef-aufgaben-vorlagen bleiben gruen.

Die 112 Aufgaben selbst stehen noch in der Datenbank -- sie gehoert
dogiweb, ich habe dort nur Leserecht. Der Befehl dafuer geht an Filipe.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-23 17:21:15 +02:00
DogFatherGitandClaude Opus 5 1f2a4d335e Eine Bewerbung, die niemand sieht, ist keine
Beim Weiterarbeiten am Vorlagenbrett nachgemessen und gefunden:
`benachrichtige` kam in workspace-zuteilung.js KEIN EINZIGES MAL vor,
in workspace-vorlagen.js auch nicht.

Beide Bewerbungswege waren gebaut, beide funktionierten -- und beide
waren stumm:

  * Bewirbt sich Frida, erfaehrt DogFather es nur, wenn er von sich
    aus das Brett aufmacht.
  * Antwortet er, erfaehrt Frida es nur, wenn SIE von sich aus
    nachsieht.

Das ist keine Kleinigkeit, das ist die Funktion. Wer sich bewirbt,
wartet -- und Warten ohne Rueckmeldung fuehlt sich nach zwei Tagen an
wie "interessiert keinen". Genau das soll eine Bewerbung verhindern.

WER ES ERFAEHRT -- ABGELEITET, NICHT AUFGEZAEHLT
------------------------------------------------
Die naheliegende Zeile waere `rolle IN ('admin','hand')` gewesen; so
steht sie in workspace-hilfe.js. Das ist eine Abschrift, und
Abschriften altern: Kaeme morgen eine Rolle dazu, die entscheiden
darf, bekaeme sie keine einzige Meldung -- und niemand merkte es, weil
ja alles funktioniert.

Gefragt wird deshalb die Regel selbst (entscheidetUeberAufgaben),
Person fuer Person. Und zusaetzlich darfSchreibenMit: Wer den Bewerber
gar nicht sehen darf, bekommt auch keine Meldung ueber ihn. Das ist
keine Vorsicht um ihrer selbst willen -- ohne diese Zeile erfuehre die
Agentur ueber eine Push-Nachricht, dass es Team Dogi ueberhaupt gibt.

Gemessen: Die Bewerbung eines Modis erreicht genau zwei Leute
(admin, hand) von sechs Aktiven. Nicht die linke Hand (sie entscheidet
hier nicht mit), niemand aus dem anderen Haus, und nicht der Bewerber
selbst.

ZWEI SCHALTER, ZWEI ENTSCHEIDUNGEN
----------------------------------
"bewerbung_neu" trifft den, der antwortet -- an einem lebhaften Tag
mehrfach, das kann man stumm stellen wollen. "bewerbung_antwort"
trifft den, der wartet; sie kommt einmal, und niemand will sie stumm
stellen. Eine gemeinsame Art hiesse: beides zusammen abschalten oder
beides zusammen ertragen. Dieselbe Ueberlegung wie beim Chat
(Nachricht / Erwaehnung).

Beide von sich aus an. Keine Ausnahme von der Ruhezeit: Eine Bewerbung
wartet, ein Anruf nicht.

DIE NOTIZ STEHT IN DER MELDUNG
------------------------------
Filipe hat sie ausdruecklich verlangt ("mit einem text als notiz").
Sie erst zu verlangen und dann an genau der Stelle zu verschweigen, an
der man sie liest, waere die halbe Funktion. Und das Ergebnis steht im
TITEL -- "angenommen" oder "diesmal nicht" -- damit man es lesen kann,
ohne zu oeffnen. Auch die gute Nachricht.

Der Wortlaut steht in zwei reinen Funktionen (bewerbungText,
antwortText), exportiert, damit eine Pruefung sie lesen kann, ohne
einen Push-Dienst nachzubauen. Genau an so einer Stelle steckte am
18.09. der Fehler "Nachricht von [object Object]", der von aussen
nicht messbar war.

EINE STELLE FUER BEIDE WEGE
---------------------------
workspace-bewerbung-melden.js. Zwei Fassungen waeren zwei
Gelegenheiten, dass eine davon die Ruhezeit, die Abschaltbarkeit oder
die Haeusertrennung vergisst -- und dieselbe Person laese zweimal
etwas Verschiedenes ueber denselben Vorgang.

Die Meldung wird NICHT abgewartet (`void`): Ob sie durchgeht, haengt
am Push-Dienst, an der Ruhezeit und an den Einstellungen des
Empfaengers. Nichts davon darf entscheiden, ob die Bewerbung
gespeichert ist -- die ist es laengst.

NOCH EINE ROTE PRUEFUNG, DIE NIEMAND GESEHEN HAT
-------------------------------------------------
pruef-push-ziel meldete: "aber nicht auf eine Seite, die es fuer ihn
nicht gibt (/workspace/calls.html)". Das sah aus wie ein Befund und
war eine erfuellte Bestellung -- Filipe hatte am 22.09. genau das
Gegenteil bestellt ("jeder der einen kalender hat soll auch sowas
haben"). Nachgemessen: Modi, rechte und linke Hand haben je eine
Calls-Kachel.

Die Pruefung steht jetzt andersherum: Die Calls-Seite MUSS stehen
bleiben. Dieselbe Zeile schuetzt damit das, was sie vorher verboten
hat -- und wird rot, wenn die Kachel je wieder verschwindet. Das
Umlenken selbst bleibt geprueft (Scouting, zweimal).

Das ist die DRITTE stille rote Pruefung an einem Tag (nach
pruef-modi-wortleck und pruef-zuteilung). Die Frage an Filipe, ob ein
naechtlicher Lauf sie selbst anstossen soll, steht in der Vault-Notiz
und wird nicht von mir allein entschieden.

GEPRUEFT
--------
pruef-modi-katalog: 116 Pruefungen, 0 Fehler (vorher 95).
  Neu: die beiden Schalter, wer es erfaehrt (samt Gegenprobe, dass es
  nicht einfach alle sind: 2 von 6), und der Wortlaut an acht Proben.
  Dabei war meine eigene erste Messung falsch -- sie erwartete eine
  Kuerzung bei 50 Zeichen, die nur gilt, wenn eine Notiz danebensteht.
  Steht als Begruendung in der Pruefung.
pruef-push-ziel: 11 von 11 (vorher 1 Fehler).
pruef-zuteilung, pruef-push, pruef-push-weg: gruen.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-23 11:16:30 +02:00
DogFatherGitandClaude Opus 5 e736a12cff Vorlagenbrett: Modis bewerben sich, DogFather und die rechte Hand entscheiden
Filipe: "die modis sollen bei all diesen voschlaegen auch nur bewerben
koennen. die aufgaben aus der vorlage, da sollen die modis sich nur
bewerben koennen und nur dogfather und die rechte hand sollen annehmen
oder ablehnen koennen, mit einem text als notiz."

WAS SICH AENDERT
----------------
Auf dem Vorlagenbrett steht fuer einen Modi jetzt "Bewerben" statt
"Uebernehmen". Wer sich beworben hat, sieht das an der Karte -- samt
dem Satz, WER antwortet, und einem Weg zurueck. DogFather und die
rechte Hand sehen die Bewerbung an derselben Karte, mit Namen und dem
Wort dazu, und daneben "Annehmen" und "Ablehnen". Beide fragen nach
einer Notiz.

"ALSO NUR" GILT AUCH AM SERVER, nicht nur im Browser: Die alte Tuer
antwortet einem Modi mit 403 und dem Satz, was stattdessen geht. Ein
ausgeblendeter Knopf ist eine Bitte, abgelehnt wird in der Route.

DIE LINKE HAND STEHT ABSICHTLICH NICHT BEI DEN ENTSCHEIDERN
------------------------------------------------------------
Sie gehoert seit dem 22.09. ueberall dazu ("ich will dass die linke
hand auch ueberall zu sehen ist"). Hier hat Filipe genau zwei genannt.
Das ist keine Vergesslichkeit von mir, sondern seine Aufzaehlung -- und
dieselbe Grenze zieht das Haus schon bei den Aufgaben-Bewerbungen
(entscheidetUeberAufgaben). Sie darf weiter VERTEILEN; das hat er nicht
angefasst.

Sie ist deshalb die schaerfste Probe in der Pruefung: Wer statt "darf
entscheiden" nur "darf verteilen" abfragt, laesst sie mitentscheiden --
und niemandem faellt es auf, weil alles funktioniert.

DIE AUFGABE ENTSTEHT ERST MIT DER ZUSAGE
----------------------------------------
Der naheliegende Weg waere gewesen, beim Bewerben gleich die Aufgabe
anzulegen und die vorhandene Bewerbung aus aufgaben_zuteilung
daranzuhaengen. Dann stuende nach zwoelf Absagen zwoelfmal Arbeit auf
dem Brett, die niemand bestellt hat -- und um das einzufangen, muesste
das Ablehnen Aufgaben LOESCHEN. Loeschen als Nebenwirkung einer Absage
ist genau die Sorte Regel, die irgendwann das Falsche trifft.

Also eine eigene, kleine Tabelle (vorlagen_bewerbungen). Bis jemand ja
sagt, gibt es nur eine Zeile. Die Woerter sind dieselben wie drueben
(zustand, entscheid_text, entschieden_von) -- zwei Namen fuer dieselbe
Sache waeren zwei Sprachen im selben Haus.

Und die Zusage legt die Aufgabe ueber DIESELBE Funktion an wie das
Uebernehmen (katalogAufgabeAnlegen, neu, aus dem Katalog-Zweig
herausgeloest). Damit sieht eine erbetene Aufgabe aus wie eine
verteilte: gleiche Frist, gleiche Kategorie, gleiche Kennung. Ein
zweiter Weg waere ein zweiter Satz Regeln.

KLEINIGKEITEN, DIE SONST WEHTUN
-------------------------------
  * "Alle 12 uebernehmen" gibt es nur fuer die, die verteilen. Ein
    "Alle bewerben" waere der schnellste Weg, zwoelf Bitten auf einmal
    loszuschicken -- und damit zwoelf Entscheidungen fuer jemand anderen.
  * Wer eine Aufgabe schon hat, bekommt keinen Bewerben-Knopf. Der
    Server lehnt das ohnehin ab; ein Knopf, der eine Absage holt, ist
    schlimmer als keiner.
  * Nach einer Absage darf man sich wieder bewerben. Der eindeutige
    Index gilt deshalb nur fuer OFFENE Bewerbungen -- ueber alle
    Zustaende waere eine Absage ein Bann.
  * Gesucht wird ueber den SCHLUESSEL der Vorlage, nicht ueber die
    Nummer in der Liste. Die Nummer verschiebt sich, sobald jemand eine
    Vorlage einfuegt -- genau dieser Fehler ist am 16.09. schon einmal
    passiert.

GEPRUEFT
--------
pruef-modi-katalog: 95 Pruefungen, 0 Fehler (vorher 49).

Die Pruefung ist beim Umbau ROT geworden -- 9 Zeilen, alle dort, wo ein
Modi sich selbst etwas nahm. Richtig so, sie hat die Aenderung bemerkt.
Sie steht jetzt auf dem neuen Weg und misst ihn ganz:

  * der Modi kommt an die alte Tuer nicht mehr heran (403, erst_bewerben)
  * die Bewerbung legt NOCH KEINE Aufgabe an
  * die linke Hand darf verteilen, aber nicht entscheiden (403)
  * der Bewerber selbst erst recht nicht (403)
  * die Zusage erzeugt die Aufgabe -- mit Kategorie, Frist, Besitzer
  * die Notizen stehen in der Datenbank, samt WER entschieden hat
    (direkt gelesen: ein Feld, das der Server annimmt und nirgends
    speichert, saehe von aussen genauso aus)
  * nach einer Absage geht es wieder
  * am Bildschirm: alle Knoepfe heissen "Bewerben", kein einziger
    "Uebernehmen" mehr, die wartende Karte nennt, wer antwortet --
    und DogFather klickt sich durch Annehmen samt Notizfeld, bis die
    Aufgabe auf dem Brett steht

Die Gegenprobe in Abschnitt 7 lief mit dem Zugang des Modis und haette
ab heute nur noch bewiesen, dass die Rechtepruefung greift -- sie
benutzt jetzt DogFather. Genau so verliert eine Pruefung still ihren
Sinn.

pruef-aufgaben-vorlagen: unveraendert gruen.

ZWEI FUNDE NEBENHER, BEIDE AELTER ALS DIESE AENDERUNG -- gemessen, nicht
vermutet (mit gestashten Aenderungen gegengeprueft):
  * pruef-modi-wortleck ist seit dem 22.09. rot: Der Rollenname steht
    in team.css und teamlage.js, also in Dateien, die jeder bekommt.
  * pruef-zuteilung stuerzt seit laengerem ab (#neu-oeffnen ist
    verborgen). Beides kommt als naechstes, getrennt.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-23 10:59:51 +02:00
DogFatherGitandClaude Opus 5 25de892fdb screen5: Aus dem Treff wird das Rudel, aus der Zentrale die IrrenAnstalt
Filipe, 22.09.2026: "ersetze die zentrale durch, Die IrrenAnstalt.
genau so geschrieben bitte. und alles was treff heißt oder wo treff
steht soll durch Rudel ersetzt werden bitte."

Die Schreibweise "IrrenAnstalt" mit grossem A in der Mitte ist so
gewollt. Das steht als Hinweis daneben, damit sie beim naechsten Mal
niemand "korrigiert".

WAS UMBENANNT WURDE: alles, was jemand LIEST -- Kachelnamen,
Ueberschriften, Markenzeilen, Saetze, Meldungen, Aufgabenvorlagen.
116 Zeilen in 42 Dateien.

WAS BLEIBT: Adressen (treff-regeln.html), Bezeichner (TREFF_ROLLEN),
Datenbankwerte (bereich = 'treff'), Abfrageteile (b=treff). Eine
Adresse umzubenennen bricht jedes Lesezeichen, und ein Datenbankwert
umzuschreiben waere eine Umstellung ohne Gegenwert. Dieselbe
Entscheidung wie heute frueh bei Dogi-Media, wo material.html auch
material.html geblieben ist.

DREI GRAMMATIKFEHLER IM EIGENEN ENTWURF, alle vor dem Ausliefern
gefunden -- ein blindes Ersetzen reicht hier nicht:

1. "der Treff" ist maennlich, "das Rudel" saechlich. Ohne Tabelle
   waere ueberall "Der Rudel" gestanden. (Und "Treffer" waere zu
   "Rudeler" geworden, "Treffen" zu "Rudelen" -- deshalb greift die
   Regel nur bei Wortgrenze und nie vor einem Kleinbuchstaben.)

2. BINDESTRICH-ZUSAMMENSETZUNGEN. In "der Treff-Chat" gehoert der
   Artikel zu "Chat", nicht zu "Treff". Der erste Durchlauf machte
   daraus "das Rudel-Chat", "das Rudel-Kacheln" und "ein Rudel-Raum".
   Jetzt greift die Artikelregel nur, wenn das Wort allein steht.

3. GESCHUETZTE LEERZEICHEN. In den Markenzeilen steht
   `Der&nbsp;Treff`, damit die zwei Woerter nicht umbrechen. Das
   Muster hat daran vorbeigegriffen: "Der&nbsp;Rudel", auf fuenf
   Seiten. Jetzt wird das Trennzeichen mitgefasst und unveraendert
   wieder eingesetzt.

Gefunden wurden alle drei, weil jede einzelne der 116 Zeilen vor dem
Schreiben als ALT/NEU ausgegeben und gelesen wurde -- und danach
gezielt nach falschen Artikeln gesucht ("den Rudel", "der Rudel",
"einen Rudel"). Uebrig blieben sechs Treffer, und die sind alle
richtig: "einen Rudel-Raum", "der Rudel-Chat", "den Rudel-Regeln" --
Zusammensetzungen, bei denen der Artikel zum letzten Wort gehoert.

UND ZWEI PRUEFUNGEN, die die Umbenennung nicht mitbekommen haetten:
`/Treff/.test(...)` und `/Treff/i.test(...)`. Ein regulaerer Ausdruck
ist keine Zeichenkette -- sie haetten ab sofort nach einem Wort
gesucht, das die Seite nicht mehr sagt, und waeren still rot geworden,
ohne dass etwas kaputt ist.

Geprueft, alle gruen: pruef-treff, pruef-treffchat,
pruef-deutsche-texte, pruef-uebernahme, pruef-crew-adresse,
pruef-willkommen, pruef-wege-nach-draussen, pruef-vorlagen,
pruef-start-ansicht, pruef-struktur.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-22 14:25:56 +02:00
DogFatherGitandClaude Opus 5 3ebe87611e Dreizehn fortgeschrittene Aufgaben -- und die ersten, die es ohne den Kanal nicht geben konnte
Filipe: "ich will auch dass es fortgeschrittene aufgaben gibt."

88 -> 101 Aufgaben, Stufe "Erfahren" von 29 auf 42. Kein doppelter
Schluessel, kein Text unter der Laenge, die `pruef-modi-katalog`
verlangt (der Text muss BEGRUENDEN, nicht den Titel wiederholen).

DER PUNKT IST NICHT DIE ZAHL, sondern dass mehrere davon vorher gar
nicht formulierbar waren. Erst seit es Kanaele gibt, kann eine Aufgabe
lauten:

  "Denselben Moment fuer zwei Kanaele verschieden schneiden --
   was auf dem Hauptkanal als Rueckblick funktioniert, braucht bei
   Clips einen haerteren Einstieg."

  "Einen Monat lang nichts vom Hauptkanal spiegeln -- erst wenn der
   Nebenkanal sich allein traegt, weiss man, ob er ein Kanal ist oder
   ein Echo."

  "Die Kanaele in einer Tabelle nebeneinanderstellen -- einzeln
   angesehen waechst jeder irgendwie."

Dazu Sachen, die eine erfahrene Person von einer eingearbeiteten
unterscheiden: messen, was ein Ausschnitt an ZEIT kostet; denselben
Ausschnitt zweimal mit anderem Anfang veroeffentlichen; eine Woche
planen, in der DogFather nicht da ist; jedem Kanal einen festen Kopf
geben.

Die feste Zahl in pruef-modi-katalog ist mitgezogen (88 -> 101). Sie
bleibt bewusst fest: Eine Zahl, die sich selbst nachzaehlt, merkt
nicht, wenn etwas herausfaellt.

pruef-modi-katalog 49 und pruef-deutsche-texte 9 gruen -- die neuen
Texte tragen echte Umlaute, nicht ae/oe/ue.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-17 03:08:24 +02:00
DogFatherGitandClaude Opus 5 4802954263 Der Aufgabenkatalog fuers Team: Kategorie mal Stufe, 88 Aufgaben
Filipe: "perfektionniere die kategorien wo ich aufgaben an die modis
verteile und so, ich will dass du alles was es gibt auf der welt durch
gehst und wie bei den aufgaben wo sie fuer mich haben auch mit
kategorien und vielen aufgaben."

ERST GEZAEHLT, WAS DA WAR. Es gab einen Katalog: 60 Eintraege in neun
Phasen. Wem sie gehoerten:

  DogFather                13
  DogFather & rechte Hand  12
  rechte Hand              14
  --------------------------------
  zusammen                 39 von 60

Zwei Drittel des "Modi-Katalogs" waren Aufbauarbeiten fuer Filipe
selbst. Nur 20 Eintraege waren wirklich Arbeit fuer jemanden im Team.
Und die Verteilung ueber die vierzehn Kategorien war schief: Planung
10, Events 1, Wachstum 1, Branding 1, Sonstiges 0.

Der Aufbauplan ist nicht falsch, nur etwas anderes -- er bleibt unter
`aufbauplan` erhalten. Ihn zu loeschen hiesse, 60 durchdachte Schritte
wegzuwerfen, weil sie am falschen Platz standen.

NEU: 88 Aufgaben in KATEGORIE mal STUFE, dieselbe Form wie bei den
Creator-Vorlagen. Wer eine Aufgabe vergibt, denkt "Frida macht Chat"
und nicht "wir sind in Phase 3".

  Chat 11, Team 8, Community/Events/Clipping/Technik je 7,
  Social/Planung/Organisation je 6, Kommunikation/Analyse/Wachstum/
  Branding je 5, Sonstiges 3 -- keine Kategorie mehr leer.

  Drei Stufen: neu dabei (24), eingearbeitet (35), erfahren (29).
  Eine Aufgabe der Stufe "erfahren" an einen Neuen zu geben ist kein
  Kompliment, sondern ein Ueberfallen.

UND DIE VIERZEHN KATEGORIEN HABEN JETZT EINEN SATZ. Vorher standen da
vierzehn nackte Namen -- "Organisation" und "Planung" nebeneinander,
ohne dass jemand sagt, was worin gehoert. Dann landet dieselbe Aufgabe
beim einen unter Planung, beim anderen unter Organisation, und jede
Auswertung darueber ist wertlos. Jetzt: Planung ist, was NOCH NICHT
ist; Organisation, was bereits ist, in Ordnung zu halten.

RECHERCHIERT, NICHT AUSGEDACHT (Quellen im Kopf des Katalogs):
Twitch und Discord zu dem, was ein Moderator tatsaechlich tut; TikTok
LIVE im Besonderen (gefilterte Kommentare, Gaesteverwaltung, Regeln zu
Beginn, Matches, Geschenke ohne Betteln); Community-Arbeit zu Rhythmus,
Vertretung und Monatsrueckblick. Dazu die Burnout-Forschung, die schon
in "Wie geht's dir?" steht -- deshalb stehen unter "Team" Aufgaben, die
zu wenig Zeit und Streit frueh sichtbar machen.

WAS DABEI BEINAHE SCHIEFGEGANGEN WAERE, und was es gefunden hat:

  Das Uebernehmen griff noch auf MODI_KATALOG zu -- die alten Phasen.
  Der Browser schickt die Nummer aus der AUSGELIEFERTEN Liste zurueck.
  Ein Klick auf "Uebernehmen" haette damit eine voellig andere Aufgabe
  angelegt, und zwar eine, die es gibt: keine Fehlermeldung, nichts
  Rotes, nur die falsche Aufgabe auf dem Brett. Gefunden hat das
  pruef-modi-katalog, die an der verschwundenen Phase abgestuerzt ist.

  Der Knopf "Alle N uebernehmen" schickte die Stufe nicht mit. Er sagte
  "Alle 4 uebernehmen" und haette elf angelegt -- das merkt man erst
  auf dem Brett.

  Und der Satz ueber dem Brett sagte weiterhin "Nach Etappen sortiert".
  Gesehen im Bildschirmfoto der Pruefung, nicht im Code.

  server/pruef-modi-katalog.mjs   36 Pruefungen, 0 Fehler
  Neu darin: jede Kategorie muss belegt sein (mindestens drei), jede
  Stufe auch, keine Kennung doppelt -- und JEDER TEXT MUSS BEGRUENDEN.
  Die letzte Zeile hat zwei meiner eigenen Texte als zu duenn erwischt.

  pruef-modi-kategorien 25, pruef-aufgabenbrett, pruef-vorlagen,
  pruef-css-klassen, pruef-struktur -- alle 0 Fehler

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-16 19:05:34 +02:00
DogFatherGitandClaude Opus 5 fb45072d25 Die Live-Checkliste am Termin -- ein Knopf, keine Automatik
KAPITEL 5.7 UND 11: "Wird pro Live-Termin als Checkliste erzeugt und den
eingeteilten Modis zugewiesen."

DAS DOKUMENT SAGT "AUTOMATISCH", FILIPE HAT SICH FUER EINEN KNOPF
ENTSCHIEDEN (10.09.2026). Vierzehn Aufgaben, die bei jedem Termin von
selbst erscheinen, ueberrumpeln -- und was ungefragt Dinge anlegt, ist
schwer wieder loszuwerden. Wer einen Termin nur zum Merken eintraegt,
haette danach aufzuraeumen.

Ein Druck erzeugt die vierzehn Punkte aus Kapitel 11 (fuenf vorher,
fuenf waehrend, vier danach), mit dem TERMINTAG als Frist -- eine
Vorbereitung, die nach dem Live faellig wird, ist keine -- verteilt auf
die eingeteilten Modis, jede mit ihrer Kategorie.

DREI STELLEN, AN DENEN SO ETWAS ERFAHRUNGSGEMAESS KIPPT. Alle drei
vorher benannt, dann gemessen:

  * ZWEIMAL DRUECKEN. Der zweite Druck legt nichts an. Und der Knopf
    zeigt die Zahl ("Checkliste (14)") -- sonst drueckt man ihn zur
    Sicherheit noch einmal und weiss hinterher nicht, ob doppelt
    angelegt wurde.
  * DAS ZWEITE LIVE. Hier waere der Fehler teuer: Die Kennung, an der
    "schon uebernommen" erkannt wird, traegt jetzt die TERMINNUMMER
    (`mk-vor-technik#42`). Ohne sie stuende beim zweiten Live alles als
    erledigt da, und niemand bekaeme seine Liste. Geprueft mit zwei
    echten Terminen.
  * EIN TERMIN OHNE EINGETEILTE MODIS. Vierzehn herrenlose Aufgaben
    waeren schlimmer als keine -- stattdessen kommt eine Rueckfrage.

KEIN ROLLENNAME IM BROWSER, wie ueberall: Der Server schickt ein Ja/Nein
("gehoert der Knopf hierhin") und eine Zahl ("wie viele stehen schon").
Aus einer Zahl laesst sich nichts schliessen. Ein Manager bekommt den
Knopf gar nicht erst -- und wenn er es ueber die Schnittstelle versucht,
wortgleich dieselbe Absage wie fuer eine erfundene Art.

DIE ZAEHLUNG LAEUFT IN EINER ABFRAGE fuer alle Termine im Blick, nicht
je Zeile eine. Bei dreissig Terminen waeren das dreissig Abfragen -- den
Fehler hat das Haus bei den Teilnehmern schon einmal gemacht und drei
Zeilen darueber ausdruecklich vermerkt.

DIE TERMINE IN DER PRUEFUNG LIEGEN RELATIV in der Zukunft (+3 und +10
Tage). Ein festes Datum holt der Kalender irgendwann ein, und dann ist
die Pruefung rot, ohne dass etwas kaputt ist -- genau so ist es am
06.09.2026 bei der Oeffnungsschranke des Shops passiert.

GEPRUEFT: pruef-modi-livecheck (16, neu), pruef-kalender, pruef-serien
(69), pruef-vorlagen, pruef-modi-katalog (29).

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-10 02:40:51 +02:00
DogFatherGitandClaude Opus 5 60e875814b Die 60 Aufgaben aus Teil 2 -- und kein Wort zu viel im Browser
Kapitel 14 des Anforderungsdokuments: "Alle Aufgaben dieses Katalogs
koennen 1:1 als Vorlagen in die App importiert werden -- inklusive
Kategorie, empfohlener Rolle und Frequenz. So ist das Aufgaben-Board ab
dem ersten Tag vollstaendig befuellt, statt leer zu starten."

DER KATALOG. 60 Aufgaben, Verteilung wie im Dokument: 12 Aufbau, 9
Alltag, 5 vor / 5 waehrend / 4 nach dem Live, 8 Content, 5 Woche, 5
Monat, 7 Community. Neun Etappen statt sechs Phasen -- Phase 3 zerfaellt
in Vor/Waehrend/Nach und Phase 5 in Woche/Monat, und das sind fuer den,
der davorsitzt, verschiedene Momente. "Waehrend des Lives" sucht man
nicht in derselben Liste wie "einmal im Monat".

Die TEXTE sind neu. Das Dokument nennt nur die Titel, und ein Titel
allein ("Eskalationsregeln definieren") sagt nicht, woran man erkennt,
dass man fertig ist. Jeder Satz nennt das EINE, was zaehlt -- nicht
drei, denn wer sich fuenf Dinge vornimmt, macht keines.

Uebernehmen legt eine ganz normale Aufgabe an, einzeln oder eine ganze
Etappe. Die Kategorie wandert mit: Ohne sie muesste man 60-mal von Hand
einsortieren, was im Dokument bereits danebensteht -- und niemand
merkte es, weil die Aufgabe ja da ist. Genau das prueft die neue
Pruefung ausdruecklich.

KEINE NEUE ADRESSE, kein neuer Feldname mit dem Rollennamen darin: Der
Katalog kommt unter "katalog" in der vorhandenen Antwort, das
Uebernehmen ueber die vorhandene Route mit einer neuen Art. Wer ihn
nicht bekommt, sieht `null` -- und ein Manager, der die Art trotzdem
schickt, bekommt WORTGLEICH dieselbe Absage wie fuer eine erfundene.

ZWEI SELBSTKORREKTUREN, beide von derselben Sorte:

  * Die Kategorien waren auf ACHT zusammengefasst, begruendet damit,
    dreizehn Knoepfe seien auf einem Handy unbedienbar. Gebaut ist aber
    ein AUSWAHLFELD, keine Knopfleiste -- die Begruendung passte nicht
    zu dem, was ich getan hatte, und haette eine Uebersetzungstabelle
    noetig gemacht ("Branding gehoert zu Planung"), die spaeter niemand
    nachvollzieht. Jetzt sind es die vierzehn des Dokuments, und jede
    Aufgabe traegt genau die Kategorie, die danebensteht.
  * Zwei Erwartungen in meiner eigenen Pruefung waren veraltet, beide
    durch Aenderungen, die ich absichtlich gemacht hatte. Die eine
    suchte woertlich nach "Clipping & Schnitt" -- nach dem Umbenennen
    haette sie nach etwas gesucht, das es nicht mehr gibt, und waere
    gruen gewesen, ohne etwas zu pruefen. Die Namen kommen jetzt aus
    derselben Quelle wie die Oberflaeche.

UND WIEDER HAT ES DAS BILDSCHIRMFOTO GEZEIGT, nicht der Code: Die
Kopfleiste sagte auf jeder Seite "Creator Workspace" -- fuer jemanden,
der moderiert statt einen Kanal aufzubauen, der falsche Name. Sie folgt
jetzt demselben Weg wie die Zierzeile auf der Startseite. Nur der
Verweis wird umgeschrieben, der Seitenname dahinter bleibt; das
geschuetzte Leerzeichen ebenfalls, sonst faellt die Leiste auf schmalen
Handys in zwei Zeilen.

BEWUSST NICHT ANGEFASST: Im Hintergrundbild steht schwach "SPICY
MEDIA". Es ist kein Element im HTML, sondern in die buehne-*.webp
eingebacken -- dafuer braeuchte es einen zweiten Bildersatz. Nachgesehen
statt vermutet: Im DOM der Seite kommt der Text nicht vor.

GEPRUEFT: pruef-modi-katalog (29, neu), pruef-modi-kategorien (25),
pruef-modi-wortleck (4), pruef-rollen (113), pruef-kopf-messen,
pruef-vorlagen, pruef-aufgabenbrett.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-10 01:20:24 +02:00
DogFatherGitandClaude Opus 5 ede34fe386 Der Rollenname stand in zwei Dateien, die jeder bekommt
SELBST EINGEBAUT, EINE STUNDE VORHER. Beim Bau der Kategorien habe ich
SECHS Vergleiche und VIER Kommentare mit dem Rollennamen nach
assets/js/aufgaben.js und assets/js/start.js geschrieben -- waehrend ich
an anderer Stelle penibel darauf achtete, ihn herauszuhalten.

Alles unter workspace/ geht an JEDEN, der die Seite oeffnet. Ein Blick in
den Quelltext, und der ganze verborgene Zugang waere gefunden gewesen:
nicht wer ein Modi ist, aber dass es die Rolle ueberhaupt gibt -- und
genau das war Filipes Bedingung ("damit die von der workspace auch nicht
mal sehen dass die modis von mir einen eigenen zugang haben").

Gefunden habe ich es durch Nachsehen, nicht durch Nachdenken. Nachgedacht
hatte ich vorher schon, und zwar richtig -- beim Anzeigenamen und bei der
Rollenauswahl habe ich es sauber ueber den Server geloest. Eine Stunde
spaeter habe ich dieselbe Regel dreimal gebrochen, ohne es zu merken.

WAS AN DIE STELLE TRITT, dreimal derselbe Gedanke:

  * Das Vorlagenbrett: /workspace/api/vorlagen liefert den Katalog jetzt
    schlicht nicht an die Betroffenen. `if (!vorlagen) return` laesst das
    Brett dann verborgen -- dieselbe Wirkung, ohne eine Zeile, die
    verraet, fuer wen sie gilt.
  * Das Kategorie-Feld: statt `ich.rolle === '...'` kommt vom Server
    `kategorie_fuer` -- NUMMERN statt eines Rollennamens. Aus Nummern
    laesst sich nichts schliessen; wer keine bekommt, sieht eine leere
    Liste, und eine leere Liste sagt nichts. `null` heisst "gilt immer"
    und muss `null` bleiben: Ein `|| []` daraus zu machen waere der
    stille Fehler, aus "gilt immer" wuerde "gilt nie".
  * Die Kommentare sagen jetzt, WAS gilt, ohne zu sagen, FUER WEN.

UND EINE SPERRE DAGEGEN: pruef-modi-wortleck durchsucht alle 73
ausgelieferten Dateien nach dem Rollennamen. Die Regel ist damit kein
Vorsatz mehr, sondern ein Werkzeug -- wer ihn dort hineinschreibt,
bekommt einen roten Lauf statt eines erhobenen Zeigefingers im Kommentar.
Mit Gegenprobe in beide Richtungen: Eine eingebaute Fundstelle MUSS
erkannt werden, und "modifiziert", "Modul", "Modus" duerfen NICHT
anschlagen -- eine Pruefung, die staendig Fehlalarm gibt, wird
abgeschaltet und faengt dann auch den echten Fall nicht mehr.

Die Dateizahl steht in der Bedingung, nicht nur im Meldetext: Faende die
Suche keine einzige Datei, waere sonst alles gruen, ohne dass etwas
angesehen wurde.

AUSSERDEM BELEGT statt behauptet: Dass das Kategorie-Feld bei DogFather
nur erscheint, wenn er wirklich einen Modi eintraegt, steht jetzt in der
Pruefung -- erst ein Creator (Feld bleibt weg), dann ein Modi (Feld
kommt). Ohne den zweiten Schritt waere "bleibt weg" auch dann gruen,
wenn es NIE kaeme.

GEPRUEFT: pruef-modi-wortleck (4, neu), pruef-modi-kategorien (25),
pruef-modi-verborgen (57), pruef-vorlagen, pruef-aufgabenbrett.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-10 01:05:01 +02:00
DogFatherGitandClaude Opus 5 f3acfab10a Aufgaben: die Bedienung, nicht die Kacheln
Filipe: "ich will dass du dass system jetzt wie die vier kategorien
bedient werden, perfektionnierst ... ich red von den aufgaben. das
system von den aufgaben, die bedienung ... die hauptkachel von der
kategorie nicht veraendern oder anfassen, die bleiben so."

Die vier Kacheln sind unberuehrt. Geaendert ist, was danach kommt.

--- 1. DAS VORLAGENBRETT WAR IM WEG ---

Gemessen am Handy: Der Vorlagenblock fuellte ANDERTHALB BILDSCHIRME,
bevor die erste eigene Aufgabe kam. Und mein eigener Ausbau von Profi
und Meister ein paar Stunden vorher hat ihn noch laenger gemacht --
aus 48 Vorlagen wurden 80.

Das ist die falsche Reihenfolge: Vorlagen holt man selten, das Brett
benutzt man jeden Tag. Der Block bleibt an seiner Stelle (dort gehoert
er hin, weil daraus Aufgaben auf das Brett darunter wandern), ist aber
zugeklappt. Zugeklappt steht dort, WIE VIEL darin liegt -- sonst sieht
er aus wie eine Ueberschrift ohne Inhalt und niemand macht ihn auf.

Wer ihn aufmacht, findet ihn beim naechsten Mal offen: Wer Vorlagen
holt, holt meistens mehrere. Und zugeklappt werden die achtzig Karten
GAR NICHT ERST GEBAUT, nicht nur versteckt.

--- 2. MAN SAH NICHT, WAS MAN SCHON GEHOLT HATTE ---

Dieselbe Vorlage liess sich zweimal uebernehmen, und die Aufgabe stand
dann zweimal auf dem Brett -- ohne jeden Hinweis. Bei achtzig Vorlagen
ueber vier Stufen weiss niemand auswendig, was er letzten Monat schon
geholt hat.

Die Kennung der Vorlage steht jetzt an der Aufgabe (neue Spalte
`vorlage`). Ueber den TITEL zu vergleichen waere die naheliegende
Abkuerzung gewesen -- und faellt in dem Moment um, in dem jemand den
Titel einer uebernommenen Aufgabe aendert.

Uebernommene Karten treten zurueck (nicht: verschwinden -- wer sie
ausblendet, nimmt die Moeglichkeit, sie bewusst noch einmal zu holen),
tragen "schon uebernommen" MIT ZUSTAND, und ihr Knopf heisst
"Nochmal". Darunter steht der Stand: "5 von 7 noch nicht uebernommen."
Es braucht dafuer keine zweite Abfrage -- die Aufgaben liegen ohnehin
im Browser.

--- 3. DRINGEND SCHLAEGT WICHTIG ---

Die Liste war nach PRIORITAET sortiert, dann nach Frist. Auf dem Brett
stand damit eine seit vier Tagen ueberfaellige Aufgabe mit Prioritaet
"niedrig" UNTER einer, die als "hoch" eingetragen ist und erst in
dreissig Tagen faellig wird. Wer die Spalte von oben liest, faengt
dann mit dem Falschen an.

Eine Prioritaet ist eine Einschaetzung von damals, eine
ueberschrittene Frist eine Tatsache von heute. Jetzt: erst was
faellig ist, dann nach Datum, und die Prioritaet entscheidet nur noch
bei gleichem Datum. Die Sortierung steht im SERVER -- Startseite und
Uebersicht lesen dieselbe Liste, und zwei Sortierungen fuer dieselbe
Frage laufen auseinander.

--- 4. "WICHTIG" STEHT JETZT DA ---

Die Prioritaet war ein 3 px breiter Rand links -- direkt neben der
farbigen Kante der Spalte und damit praktisch unsichtbar. Als Wort
steht sie dort, wo man sie liest. NUR bei "hoch" und nur solange
nicht erledigt: Eine Marke an jeder Karte waere keine Marke mehr.

--- Pruefung ---

pruef-aufgaben-vorlagen: zugeklappt als Vorgabe (gemessen wird, dass
die Karten gar nicht gebaut werden), Aufklappen, uebernommene Vorlage
markiert samt Zustand und "Nochmal"-Knopf, Stand darunter, Zustand
ueberlebt das Neuladen -- mit Gegenprobe, dass die uebrigen NICHT
markiert sind.

Dabei fiel eine eigene Nachlaessigkeit auf: Die Pruefung "die Karten
sind gestaltet" mass zu einem Zeitpunkt, an dem es zugeklappt gar
keine Karte gab -- getComputedStyle auf null liefert nichts, und der
Haken wurde rot, ohne dass etwas kaputt war. Sie misst jetzt nach dem
Aufklappen.

pruef-aufgabenbrett: die Sortierung an zwei absichtlich unguenstig
angelegten Aufgaben (ueberfaellig+niedrig gegen fern+hoch), plus die
Gegenprobe, dass bei GLEICHER Frist weiterhin die Prioritaet
entscheidet -- sonst waere die Prioritaet wirkungslos geworden, und
das waere die andere Uebertreibung.

Ausserdem gruen: pruef-css-klassen, pruef-start-ansicht, pruef-uebersicht.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-09 14:56:40 +02:00
DogFatherGitandClaude Opus 5 8c77995c2c Profi und Meister: aus 43 Eintraegen werden 217
Filipe, mit Bildschirmfoto der Stufenleiste (Anfaenger 7,
Fortgeschritten 9, Profi 6, Meister 4): "ich will dass die 2 kategorien
profi und meister ueberall noch mehr perfektionniert werden. ich will
dass da noch mehr aufgeben und moeglichkeiten sind. perfketionier diese
kategorien ultra ultra viel. die muessen richtig krass sein!!!!"

--- ZUERST GEZAEHLT, DANN GESCHRIEBEN ---

Er hatte an einer Zeile gesehen, was ueberall galt. Nachgezaehlt:

  LIVE  Vorbereitung  4 Profi / 3 Meister      gegen 6 Fortgeschrittene
        Mitschrift    2 / 0   <- KEIN einziger Meister-Punkt
        Auswertung    4 / 2
  COMM  Moderation    4 / 2
        Aktion        1 / 1
        Konflikt      1 / 1
  TECH  Setup         3 / 1
        Problem       2 / 1
        Loesung       1 / 2
  Content-Ideen       6 / 3   gegen 10 Anfaenger
  Aufgaben je Bereich 3 / 3

Die oberen beiden Raenge waren ueberall die duennsten. Das ist die
falsche Richtung: Anfaenger ist man ein paar Wochen, Meister bleibt man
Jahre. Wer alles abgehakt hat, was dort steht, findet nichts mehr und
hoert auf hinzusehen.

--- WAS DAZUGEKOMMEN IST ---

  Punkte und Ideen   Profi 28 -> 85, Meister 15 -> 76
  Aufgaben-Vorlagen  Profi 12 -> 28, Meister 12 -> 28

Die neuen Eintraege sind bewusst NICHT nur schwerere Fassungen der
alten. Auf den oberen Stufen aendert sich die ART: weg vom eigenen
Koennen, hin zu Zahlen, Verfahren, anderen Menschen und dem
Weitergeben. Meister-Punkte sind deshalb Saetze wie "der Ablauf ist
uebergebbar", "eine zweite Person kann es auch", "die
Wiederherstellung ist einmal geprobt".

Recherchiert statt aus dem Bauch: Tonkette nach AES-Reihenfolge
(Hochpass, Gate, Kompressor, Begrenzer -- wer den Kompressor vorzieht,
macht das Rauschen mit lauter), Bitrate mit 20 bis 30 Prozent Reserve
auf den gemessenen Upload, Ton mindestens 160 kbit, zwei Wege ins Netz
ueber getrennte Anbieter, die sechsstufige Eskalationsleiter der
Moderation, Schichten gegen das Alleinsein (nicht gegen die Menge --
Isolation zermuerbt Moderatoren mehr als Arbeit), Gruppen nach
Eintrittsmonat statt Gesamtzahlen, ein Beitrag in vier Formate.

Fristen nach Hausregel eingehalten: kein Anfaenger ueber 5 Tage, kein
Meister unter 7. Alle 80 Schluessel eindeutig (zwei Dubletten beim
Einfuegen gefunden und entfernt).

--- UND DIE PRUEFUNGEN, DIE DAS FESTHALTEN ---

Zwei feste Zahlen von gestern ersetzt, statt sie hochzusetzen:
`gesamt === 48` und `nachher === vorher + 3`. Beide wurden in dem
Moment rot, in dem etwas BESSER wurde -- eine Zahl, die Verbesserung
bestraft, erzieht dazu, sie stumpf nachzuziehen. Die erwartete Menge
kommt jetzt aus der Vorlage selbst.

Neu, in pruef-checkliste UND pruef-aufgaben-vorlagen: Profi und
Meister duerfen in KEINER Gruppe duenner sein als Fortgeschritten --
verglichen wird mit Fortgeschritten statt mit einer festen Zahl, damit
die Regel richtig bleibt, wenn alle Stufen wachsen. Mit Gegenprobe.

Diese Regel hat sofort etwas gefunden, das mir entgangen war: Der
erste Ausbau hatte fast nur die Saeule "Wert" verdoppelt. Nach Saeulen
gezaehlt stand da 10/9 bei Wert, aber 2/4 bei Community und 2/0 bei
Eigenwerbung. Die GESAMTsumme (14/13 gegen 9) sah dabei tadellos aus
-- eine Summe deckt eine leere Ecke zuverlaessig zu. 15 Ideen
nachgezogen.

Gruen: pruef-checkliste, pruef-aufgaben-vorlagen, pruef-bereiche-lesend,
pruef-aufgabenbrett, pruef-content.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-09 14:15:21 +02:00
DogFatherGitandClaude Opus 5 a116b286cb Aufgaben-Vorlagen: vier Bereiche mal vier Stufen, 48 fertige Aufgaben
Filipe: "ich will dass du die vier klassen ueberall mit aufgaben
perfektionnierst ... ich will dass die 4 kategorien ueberall perfekt
angepasst sind, mit perfekt kategorien und aufgaben."

WAS GEFEHLT HAT, NACHGEMESSEN

Die Tabelle `aufgaben` kannte weder Bereich noch Stufe, und
Aufgabenvorlagen gab es keine. Die Checkliste sagt, WAS sitzen muss --
sie sagt nicht, was jemand als Naechstes TUT. Zwischen "Ton ist der
Grund Nummer eins" und einem Abend, an dem der Ton wirklich besser
wird, liegt eine Aufgabe mit Frist und Verantwortlichem. Die musste
bisher jemand von Hand tippen.

WAS JETZT DASTEHT

  live       12 Aufgaben ·  3 je Stufe
  content    12 Aufgaben ·  3 je Stufe
  technik    12 Aufgaben ·  3 je Stufe
  community  12 Aufgaben ·  3 je Stufe
  zusammen   48

Drei je Feld und nicht zehn: Wer zehn Aufgaben bekommt, macht keine.
Drei sind ein Abend, eine Woche, ein Monat -- und die Fristen sind
entsprechend gestaffelt. Jede Aufgabe bringt ihre Frist als `tage` mit;
eine Aufgabe ohne Frist ist ein Wunsch.

Die Sachaussagen stammen aus derselben Recherche wie die
Checklistenpunkte: Lautheit minus 20 bis minus 24 LUFS, Tonspur
160 kbit/s, Bitrate hoechstens 75 Prozent des Uploads, Ankuendigung
30 bis 60 Minuten vorher, Verweildauer ueber 15 Minuten, Eskalation in
vier Stufen, Intro-Retention ab 70 Prozent.

DER WEG BIS ZUR ECHTEN AUFGABE

`/workspace/api/vorlagen` liefert sie aus, `/uebernehmen` legt sie an --
als Zeile in `aufgaben`, nicht als weiterer Eintrag in `eintraege`. Eine
Aufgabe hat einen Verantwortlichen, eine Frist und einen Status, der
sich bewegt; das ist etwas anderes als eine Notiz. Zwei Orte fuer
dieselbe Sache waeren der Anfang davon, dass sie auseinanderlaufen.

Ohne Creator wird abgelehnt statt herrenlos angelegt. Ein Creator legt
sie immer fuer SICH an, auch wenn er jemand anderen angibt.

AUF DER SEITE

Ein Block ueber dem Aufgabenbrett: zwei Knopfreihen (Bereich, Stufe),
drei Karten mit Titel, Erklaerung, Frist und einem Knopf. Die
Knopfreihen benutzen `.stufenleiter` aus der Checkliste -- dieselbe
Einteilung, dieselbe Darstellung. Eine zweite Optik fuer dieselben vier
Bereiche waeren zwei Sachen zum Lernen statt einer.

ZWEI EIGENE FEHLER, BEIDE VON PRUEFUNGEN GEFUNDEN

1. Ich hatte verlangt, dass die Frist mit der Stufe waechst. Die
   Pruefung schlug fehl: Profi 6,7 Tage gegen Fortgeschritten 7,4. Beim
   Nachsehen war die ERWARTUNG falsch. Eine Profi-Aufgabe ist meist eine
   Messung -- anspruchsvoll, aber an einem Abend erledigt; eine
   Fortgeschrittenen-Aufgabe wie "Saeulen anlegen und drei Wochen
   halten" braucht zwangslaeufig Wochen. Die Stufe sagt, was man KOENNEN
   muss, nicht wie lange es dauert. Geprueft wird jetzt, was wirklich
   gilt: keine Anfaengeraufgabe ueber fuenf Tage, keine Meisteraufgabe
   unter einer Woche.

2. Der Block war zu durchsichtig. pruef-buehne mass den Untergrund als
   rgb(84, 69, 70) -- das Buehnenfoto -- und die Ueberschrift kam auf
   3,61:1 statt 4,5:1. Ein durchsichtiger Kasten hat keinen Untergrund,
   sondern den, der gerade dahinterliegt. Jetzt eine deckende Flaeche
   mit Weichzeichner: 5,21:1.

GEPRUEFT

Neu: server/pruef-aufgaben-vorlagen.mjs, 30 Pruefungen -- Vollstaendigkeit,
der Weg bis zur Aufgabe auf dem Brett des Creators, und sechs
Gegenproben (unbekannte Stufe, unbekannter Bereich, Nummer ohne
Vorlage, ohne Creator, fremder Creator, und ein Creator, der jemand
anderen angibt). Dazu ein Browserteil, der klickt statt nur zu zaehlen.

Ausserdem gruen: pruef-aufgabenbrett, pruef-buehne, pruef-css-klassen,
pruef-handy.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-09 11:21:54 +02:00
DogFatherGitandClaude Opus 5 5b80d7893b Checkliste: Stufen fuer die Content-Ideen, 34 neue Punkte aus der Recherche
Filipe (screen, Punkt 5): "du hast die bei der kategorie content-ideen
vergessen. und ich will dass du dich wirklich seeeehr krass informierst
ueber all diese kategorien in den 4 kategorien ... hol das beste vom
besten ... und dan perfektionnierst du diese kategorien bei anfaenger,
fortgeschrittene, profi und meister."

DER BEFUND, NACHGEZAEHLT

  live       33 Punkte, 33 mit Stufe
  community  23 Punkte, 23 mit Stufe
  technik    19 Punkte, 19 mit Stufe   <- sein Screenshot, 6/6/4/3
  content    13 Punkte,  0 mit Stufe   <- die Luecke

Die Stufenleiste erscheint nur, wenn mindestens ein Punkt eine Stufe
traegt. Bei den Content-Ideen trug keiner eine -- deshalb fehlte sie
dort, und nur dort. Nicht falsch, sondern FEHLEND: Die Seite sah
ueberall richtig aus, und aufgefallen ist es erst, als jemand alle vier
nebeneinander gesehen hat.

WAS JETZT DASTEHT

  live       40 Punkte · 12 / 13 / 10 / 5
  community  28 Punkte ·  8 / 10 /  6 / 4
  technik    26 Punkte ·  7 /  9 /  6 / 4
  content    28 Punkte · 10 /  9 /  6 / 3
  zusammen  122 statt 88

Alle 13 vorhandenen Content-Ideen haben eine Stufe bekommen; 34 Punkte
sind neu. Kein bestehender Schluessel wurde geaendert -- an ihnen
haengen gespeicherte Bewertungen, und ein umbenannter Schluessel waere
eine stillschweigend geloeschte Beurteilung.

DIE RECHERCHE, UND WAS DAVON UEBRIG BLIEB

Zuerst die eigene Notiz im Vault (TikTok-LIVE-Algorithmus, Juli 2026),
dann fuenf gezielte Recherchen nach aussen. Aufgenommen wurde nur, was
NACHPRUEFBAR ist und was man am naechsten Abend anders machen kann:

  - Ueber 70 Prozent entscheiden in den ersten zwei bis drei Sekunden.
    Plattformen messen die "Intro-Retention" inzwischen ausdruecklich.
    -> content: "Die erste Sekunde entscheidet" (profi)
  - Ankuendigungsvideo 30 bis 60 Minuten vor dem LIVE buendelt den
    Start; ein voller Start zieht neue nach.
    -> live: "Ankuendigung kurz vorher" (fort)
    -> content: "30 Minuten vorher" (anfaenger)
  - Durchschnittliche Verweildauer ueber 15 Minuten gilt als Zeichen,
    dass die Stimmung traegt.  -> live: "Verweildauer abgelesen" (profi)
  - Wiederkehr schlaegt Spitzenwert -- die Zahl, die man nicht faelschen
    kann.  -> live: "Wiederkehrer ueber vier Wochen" (meister)
  - Ton: minus 20 bis minus 24 LUFS, Begrenzer bei minus 3, Tonspur
    160 kbit/s, Mikrofon fuenf bis zehn Zentimeter leicht seitlich.
    -> technik: vier neue Punkte, davon einer auf Profi
  - Verworfene Bilder (Netz) und ausgelassene (Encoder) haben
    verschiedene Ursachen.  -> technik: "Netz oder Rechner unterschieden"
  - Moderation: eine Ausnahmeliste erlaubter Woerter verhindert, dass
    der Filter die Stammleute mitfaengt; Absprachen des Mod-Teams
    gehoeren nicht in den oeffentlichen Chat.
    -> community: zwei neue Punkte
  - Beste Kurzformate 2026: Haken-zuerst, nummerierte Liste,
    Vorher/Nachher, Selbstversuch, Vergleich.
    -> content: fuenf neue Vorlagen mit ausformuliertem Aufhaenger

ZWEI WACHEN, DAMIT DIESE LUECKE NICHT WIEDERKOMMT

  1. In den Daten: Jeder Punkt jedes Bereichs MUSS eine Stufe haben,
     und alle vier Stufen muessen vorkommen. Mit zwei Gegenproben --
     ein Punkt ohne Stufe und eine Liste mit nur einer Stufe muessen
     beide auffallen.
  2. Auf der Seite: Die Stufenleiste muss auf allen vier Seiten mit
     fuenf Knoepfen dastehen ("Alle" plus vier Stufen). Die Zahl steht
     jetzt in der Meldezeile, damit man sie nachlesen kann.

  Die zweite braucht es zusaetzlich: "jeder Punkt hat eine Stufe" ist
  nicht dasselbe wie "die Leiste ist zu sehen".

EIN EIGENER FEHLSCHLAG, FESTGEHALTEN

Zwischendurch habe ich die Content-Ideen ein zweites Mal zeichnen
lassen -- 6 Gruppen statt 3. Ich hatte nach `vorlagenBlock` gesucht,
nichts gefunden und daraus geschlossen, die Ideen wuerden nirgends
angezeigt. Tatsaechlich ruft content.js sie seit jeher auf (Zeile 427).
Eine plausible Herleitung statt einer Messung, genau die Sorte Fehler,
gegen die die Hausregel geschrieben ist. Zurueckgenommen; die Daten
allein waren die richtige Antwort.

Geprueft: pruef-checkliste (inkl. der neuen Wachen und Gegenproben),
pruef-content, pruef-css-klassen, pruef-buehne -- alle gruen.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-09 10:53:58 +02:00
DogFatherGitandClaude Opus 5 e616d88a30 Punkt 7: Vier Koennensstufen in den Bereichslisten -- Anfaenger bis Meister
Wunsch Filipe: "ich will dass es in diesen kategorien ... kategorien
gibt wie jetzt, aber fuer anfaenger, fortgeschrittene, profis .... falls
es noch eine kategorie gibt fuege ruhig hinzu. informiere dich so krass
wie es nur geht ... und dan will ich dass du das perfekt alles aufbaust
mit aufgaben und so."

VIER STUFEN, UND DIE VIERTE IST NICHT AUSGEDACHT. In den gaengigen
Kompetenzmodellen (Dreyfus) folgt auf "kompetent" eine Stufe, auf der
es nicht mehr um das eigene Koennen geht, sondern darum, dass es OHNE
einen weiterlaeuft. Genau daran haengen die elf Punkte der obersten
Stufe: Vorlagen, eingewiesene Vertretung, abgelegte Loesungen.

  Anfaenger        was von Anfang an sitzen muss
  Fortgeschritten  Routine statt Zufall
  Profi            gemessen statt geschaetzt
  Meister          laeuft auch ohne dich

DIE STUFE HAENGT AM PUNKT, NICHT AN DER GRUPPE. Eine Gruppe ist ein
ABLAUF ("Vor der Sendung"), eine Stufe ist ein KOENNEN. Als Gruppen
gebaut waeren es zwoelf Abschnitte statt drei, und dieselbe Frage
stuende viermal da. So bleibt der Ablauf die Gliederung und die Stufe
ein Filter darueber.

DIE INHALTE SIND RECHERCHIERT, NICHT AUSGEDACHT. 47 vorhandene Punkte
haben eine Stufe bekommen, 28 neue sind dazugekommen -- ueberwiegend
auf Profi und Meister, weil der Bestand dort duenn war. Was jetzt
drinsteht und vorher fehlte, unter anderem:

  * Bitrate hoechstens 70-80 % des GEMESSENEN Uploads; der Rest ist
    der Puffer gegen verworfene Bilder.
  * Keyframe-Abstand zwei Sekunden -- alles andere kann beim
    Zuschauer zu Puffern oder gar nicht erst zum Abspielen fuehren.
  * Tonfilter in der Reihenfolge Rauschunterdrueckung, Kompressor,
    Rauschsperre: Ein Kompressor davor hebt das Rauschen mit an.
  * Hardware-Encoder statt Prozessor -- der groesste Einzelgewinn an
    Stabilitaet.
  * Verworfene Bilder ABLESEN: Leitung und Kodierung sind zwei
    verschiedene Fehler mit zwei verschiedenen Loesungen.
  * Eskalationsleiter in vier Stufen (ansprechen, loeschen, Auszeit,
    Sperre) -- vorher festgelegt, weil Ungleichbehandlung das ist, was
    Communitys spaltet.
  * Moderatoren EINGEWIESEN, nicht nur ernannt: Regeln schriftlich,
    Eskalationsleiter, Werkzeuge einmal gezeigt.
  * Privater Probelauf statt Programmvorschau -- erst der zeigt, was
    beim Zuschauer ankommt.

Zahlen: LIVE 33 Punkte (11/10/8/4), Community 23 (7/7/5/4), Technik 19
(6/6/4/3). Jeder Punkt hat genau eine Stufe -- nachgemessen, nicht
angenommen.

DIE VORGABE IST "ALLE". Ein Filter, der beim Oeffnen schon etwas
versteckt, laesst einen Punkte suchen, die man gestern noch gesehen
hat. Die Gruppenzahlen zaehlen mit dem Filter mit; eine Gruppe, in der
nichts uebrigbleibt, sagt das in einem Satz statt leer dazustehen.

Die vier Stufenfarben sind GELIEHEN, nicht ausgesucht: dieselben, die
auf der Uebersicht schon "offen / dringend / laeuft / erledigt"
tragen. Wer die eine Seite kennt, liest die andere ohne Legende.

ZWEI EIGENE FEHLER UNTERWEGS:

1. NAMENSKOLLISION. Ich habe die Marke `fest-punkt__stufe` genannt --
   den Namen gibt es dort laengst fuer den BEARBEITUNGSstand (Offen /
   Passt so / Verbessern). Gemessen standen danach 66 Marken an 33
   Punkten, und mein neues CSS faerbte den alten Behaelter mit. Heisst
   jetzt `__koennen`. Zwei verschiedene Dinge unter einem Namen ist
   derselbe Fehler wie zwei Regeln fuer dieselbe Sache, nur eine Ebene
   frueher.

2. SCHRIFTGROESSE. Die Marke stand auf 0,66 rem = 10,56 px.
   pruef-css-klassen hat es sofort gemeldet (44 statt 43 Stellen unter
   11,5 px). Jetzt 0,72 rem.

Geprueft: pruef-checkliste, pruef-css-klassen, pruef-workspace-seiten,
pruef-schulung -- alle in Ordnung. Dazu alle drei Bereiche im Browser
durchgefiltert.

Quellen der Recherche: obsproject.com (NVENC/Encoder), dacast.com und
obs-versions.com (Bitrate, Keyframe, Tonfilter), switcherstudio.com
(Probelauf), help.twitch.tv und sendbird.com (Moderation,
Eskalation), jeffbullas.com (Einweisung von Moderatoren).

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-09 02:05:30 +02:00
DogFatherGitandClaude Opus 5 f9bf7d5674 "Hilfe anfordern" entfaellt - es bleibt die Rueckmeldung
Wunsch: "die sollen nirgendwo Hilfe anfordern koennen, sondern nur
Rueckmeldungen."

Es ist auch die klarere Loesung. Es gab zwei Wege, dasselbe zu sagen:
einen Knopf, der eine Aufgabe erzeugte, und ein Textfeld, das eine
Nachricht schrieb. Zwei Wege fuer eine Sache heisst, dass niemand weiss,
welcher der richtige ist -- und dass Antworten mal als Aufgabe und mal
als Nachricht landen. Wer dann nachsieht, findet die Haelfte nicht.

Geblieben ist die Rueckmeldung an jedem Punkt: ein Verlauf, in dem beide
Seiten schreiben koennen, sichtbar dort, wo es hingehoert -- am Punkt
selbst und nicht in einer zweiten Liste.

VOLLSTAENDIG entfernt, nicht nur ausgeblendet:
  * der Knopf in der Checkliste
  * der Knopf und die Marke "Hilfe moeglich" im Vorlagenblock
  * die Route /workspace/api/vorlagen/hilfe
  * 47 Datenfelder hilfe: true/false in den Vorlagen
  * die zugehoerigen Stile
  * der Abschnitt in pruef-vorlagen.mjs

Datenfelder, die nichts mehr bewirken, und Routen, die niemand mehr
aufruft, werden beim naechsten Mal fuer lebenden Code gehalten und
mitgepflegt. Das ist teurer als das Entfernen heute.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-01 17:19:19 +02:00
DogFatherGitandClaude Opus 5 9267797d1d Feste Checklisten statt Vorschlaege - in allen vier Bereichen
"Die neuen Sachen in der LIVE-Analyse soll der Creator FEST sehen, auch
schoen kategorisiert, und der Ansprechpartner soll anklicken koennen,
wenn er findet, dass der Creator was verbessern sollte."

DER UMBAU. Vorher waren die Punkte Vorschlaege zum Uebernehmen: Man
holte sie sich und bekam einen eigenen Eintrag. Das war falsch gedacht.
Eine Checkliste, die man erst anfordern muss, ist keine Checkliste --
und schlimmer: Zwei Creator haetten unterschiedliche Listen gehabt, je
nachdem wer sich was geholt hat. Genau das macht einen Vergleich
unmoeglich, und um Vergleich geht es bei einer Betreuung.

Jetzt stehen dieselben Punkte fuer JEDEN fest da, gruppiert:

  LIVE       21 Punkte -- vor, waehrend, nach der Sendung
  Community  14 Punkte -- Moderation vorbereiten, aufbauen, wenn es kippt
  Technik    12 Punkte -- Einrichtung, Ausfall, was geholfen hat
  Content    13 Ideen  -- nach Saeule (70/20/10) statt nach Ablauf

Jede Gruppe hat einen Satz, der erklaert, wofuer sie da ist. Eine
Ueberschrift allein sagt das nicht.

Was sich je Creator unterscheidet, ist nur der STAND -- und den setzt
die Betreuung: "Passt so" oder "Verbessern". Ein Creator kann sich nicht
selbst bewerten; koennte er es, stuende alles auf gruen. "Verbessern"
verlangt einen Satz, WAS zu verbessern ist -- eine Bewertung, mit der er
nichts anfangen kann, ist nicht streng, sondern nur entmutigend.

Der Creator sieht alles: die Stufe, den Grund, den Namen und den
Zeitpunkt. Und er kann an JEDEM Punkt antworten -- das ist der Kanal,
ueber den er ueberhaupt etwas sagen kann.

Oben steht eine Bilanz in einer Zeile: wie viele passen, wie viele sind
zu verbessern, wie viele hat noch niemand angesehen. Das ist die Frage,
die beide Seiten zuerst haben.

STABILE SCHLUESSEL statt Positionen. Ein Stand haengt am Schluessel des
Punktes ("ton-geprueft"), nicht an seiner Nummer. Haenge er an der
Position, waere beim Einfuegen eines Punktes in der Mitte jede Bewertung
dahinter am falschen Punkt -- und niemand wuerde es merken, weil beides
plausibel aussieht. 64 Punkte haben jetzt einen.

"Offen" loescht den Stand, statt ihn auf "offen" zu setzen: Ein
Datensatz, der nichts aussagt, ist Ballast.

ZWEI EIGENE FEHLER, VON DEN PRUEFUNGEN GEFUNDEN:

1. DAS CSS LAG IN DER FALSCHEN DATEI. Ich hatte es in content.css
   geschrieben -- bereich.html laedt die gar nicht. Die Punkte standen
   auf drei von vier Seiten nackt und ohne Flaeche da. Es ist derselbe
   Fehler wie im August bei .knopf-still, .schalter und .kopf-zeile, und
   es gibt seitdem eine Warnung dazu in start.css. Sie hat nichts
   genutzt, solange keine Pruefung sie nachhielt.

   Jetzt gibt es eine: Sie misst, ob eine Karte wirklich eine Kante und
   Polsterung hat -- nicht nur, ob das Element existiert. Gegenprobe
   gemacht: Klasse umbenannt, Pruefung meldet "STIL FEHLT".

2. Ein Betreuer sah beim Oeffnen keine Bewertungsknoepfe, weil noch kein
   Creator gewaehlt war -- und musste erst raten, dass er oben jemanden
   auswaehlen soll. Jetzt nimmt der Server den ersten betreuten Creator,
   wenn keiner angegeben ist.

Die alte Oberflaechenpruefung fuer den Vorschlaege-Block wurde entfernt
statt angepasst: Sie verlangte etwas, das es nicht mehr gibt. Eine
dauerhaft rote Pruefung ist schlimmer als keine -- man gewoehnt sich
daran, und beim naechsten echten Fehler sieht niemand hin.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-01 17:12:55 +02:00
DogFatherGitandClaude Opus 5 372a0eb95a Ampel und Rueckmeldungen - bewerten darf nur die Betreuung
Der Wunsch: "der Creator sieht, ob es gut ist oder schlecht. Und wenn
nicht gut, dann muss es verbessert werden -- und nur der Ansprechpartner
kann das aendern. Die Creator koennen nur Nachrichten hinterlassen zum
Kommunizieren."

ZWEI GETRENNTE DINGE, und sie getrennt zu halten ist der ganze Punkt:

  DIE AMPEL ist eine Beurteilung. Sie gehoert dem Betreuer, und nur er
  setzt sie. Koennte ein Creator sich selbst auf gruen stellen, waere
  sie wertlos -- dann stuende ueberall gruen. Der Server lehnt es mit
  403 ab und sagt dabei, wer es kann.

  DIE NACHRICHT ist ein Gespraech. Sie gehoert beiden. Ein Creator, der
  auf eine Bewertung nicht antworten kann, bekommt ein Urteil statt
  einer Betreuung.

DREI STUFEN, NICHT FUENF. Eine Zahl von 1 bis 5 klingt genauer und ist
es nicht: Niemand kann den Unterschied zwischen 3 und 4 erklaeren, und
am Ende steht ueberall die 3. Die Frage lautet "reicht das schon?", und
darauf gibt es drei ehrliche Antworten -- passt so, noch verbessern,
noch nicht angesehen.

"NOCH VERBESSERN" VERLANGT EINE BEGRUENDUNG. Eine Bewertung, mit der der
Creator nichts anfangen kann, ist nicht streng, sondern nur
entmutigend. Der Server lehnt sie ohne Grund ab; die Oberflaeche fragt
deshalb gleich danach, statt hinterher eine Fehlermeldung zu zeigen.
"Passt so" braucht keinen -- da gibt es nichts zu erklaeren.

Die Stufe steht IMMER an der Karte, auch fuer den Creator, auch wenn sie
"noch nicht angesehen" lautet. Er soll sehen, wo er steht, ohne fragen
zu muessen. Der Grund steht daneben in voller Breite, nicht in einer
Ecke.

FREMDE NACHRICHTEN BLEIBEN STEHEN -- auch fuer DogFather. Ein Gespraech
nachtraeglich umzuschreiben waere schlimmer, als eine unbedachte
Aeusserung stehen zu lassen. Wer etwas richtigstellen will, schreibt
eine neue.

VORLAGEN AUCH FUER COMMUNITY UND TECHNIK (Screens 11 und 12): 14
Moderations-, Aktions- und Konfliktpunkte, 12 Technikpunkte. Ton steht
vorn, weil schlechter Ton der Grund Nummer eins ist, warum Leute einen
Stream verlassen. Die drei Bereiche laufen jetzt ueber EINE Zuordnung
statt drei fast gleicher Bloecke -- sonst weicht der dritte irgendwann
ab. Die beiden alten Zweige wurden entfernt: Toter Code, den man stehen
laesst, wird beim naechsten Mal fuer lebenden gehalten.

Die Ampeln einer ganzen Liste kommen in EINER Abfrage. Zwanzig
Eintraege einzeln zu fragen waeren zwanzig Anfragen, und die Seite
ruckelte sichtbar beim Aufbau. Die Sichtbarkeitspruefung laeuft dabei
je Eintrag, nicht einmal pauschal -- ein fremder Eintrag taucht auch in
der Sammelabfrage nicht auf.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-01 16:49:56 +02:00
DogFatherGitandClaude Opus 5 ca10479909 Fertige Vorlagen zum Uebernehmen - Content-Ideen und LIVE-Punkte
Der Wunsch stand an fuenf Stellen gleichlautend: "ich will dass da schon
fertige Sachen stehen". Eine leere Seite mit einem Knopf "Neuer Eintrag"
verlangt vom Creator genau das, was er noch nicht kann -- zu wissen, was
ueberhaupt hineingehoert.

WARUM VORLAGEN UND KEINE VORAUSGEFUELLTEN DATEN. Man koennte beim
Anlegen eines Creators dreissig Eintraege in seine Datenbank schreiben.
Das waere falsch: Sie waeren ab dem ersten Tag "seine" Eintraege und
damit Altlast; aendert Filipe spaeter eine Formulierung, gilt sie nur
fuer neue Creator; und die Liste saehe voll aus, obwohl noch nichts
geschehen ist -- das Gegenteil einer ehrlichen Uebersicht.

Vorlagen bleiben deshalb VORSCHLAEGE, bis jemand sie uebernimmt. Sie
stehen im Code, gelten fuer alle sofort, und werden erst dann zu Daten,
wenn sie gebraucht werden. Was uebernommen ist, ist ein ganz normaler
Eintrag -- aenderbar, loeschbar, und von spaeteren Aenderungen an der
Vorlage unberuehrt.

INHALTE, fachlich begruendet:
  13 Content-Ideen, jede mit AUSFORMULIERTEM Aufhaenger und Format. Die
  ersten ein bis drei Sekunden entscheiden ueber die Verbreitung --
  "mach was Persoenliches" hilft niemandem, "Das haette ich am Anfang
  gern gewusst" kann man sagen. Verteilt nach 70/20/10 (Wert, Community,
  Eigenwerbung).

  21 LIVE-Punkte in drei Abschnitten. Der mittlere ist der wichtigste
  und gibt es sonst nirgends: Was WAEHREND der Sendung auffaellt, ist am
  naechsten Tag weg. Diese Punkte sind so formuliert, dass man sie in
  einem Moment anklicken kann, in dem man eigentlich keine Zeit hat.

  Die Vorbereitung ist die laengste Liste, weil ein LIVE dort steht und
  faellt. Ton zuerst -- der Grund Nummer eins, warum Leute wieder gehen.

"ICH BRAUCHE HILFE" wird eine AUFGABE, keine Nachricht. Eine Nachricht
ist gelesen und dann weg; eine Aufgabe bleibt stehen, bis sie jemand
erledigt, geht an den zustaendigen Betreuer (ohne Betreuer an die
Leitung -- eine Bitte um Hilfe darf nicht ins Leere laufen), traegt hohe
Prioritaet und eine Frist von drei Tagen. Ohne Frist bleibt sie liegen;
das ist der Unterschied zwischen einer Aufgabe und einem Zettel.

"CONTENT-PLANUNG" HEISST JETZT "CONTENT-IDEEN". "Planung" klang nach
Terminen und Tabellen; was dort wirklich passiert, ist das Sammeln und
Weiterentwickeln von Ideen. Der Kalender daneben plant.

EIN CREATOR DARF SEINE EIGENEN EINTRAEGE AENDERN -- aber nur im Bereich
Content. Wenn er sich eine Idee uebernimmt, ist das SEINE Idee; sie
danach nicht umbenennen zu duerfen waere absurd. LIVE, Technik,
Community und Schutz bleiben die Betreuungsakte, dort aendert er nichts.
Ein erster Anlauf hatte die Ausnahme fuer alle Bereiche erlaubt -- die
Pruefung pruef-bereiche-lesend hat das sofort gemeldet.

DREI EIGENE FEHLER, VON DEN PRUEFUNGEN GEFUNDEN:
- Der Vorlagenblock vergass nach dem Uebernehmen, was schon geholt war:
  Die Liste wird neu geladen, der Block neu gebaut, und die Markierung
  am Element war jedes Mal weg. Jetzt merkt sich das Modul die Auswahl.
- Die Regel fuer eigene Eintraege war zu breit (siehe oben).
- Die Marken im Vorlagenblock waren auf dem Handy 10,2 px klein.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-01 16:27:30 +02:00