/tutor — Lern-Tutor

Hinweis: Rahmen: 00-rahmen.md. Code: packages/plugins/src/tutor/ · Nachweise verify:tutor, verify:rubric.

Wofür

Der Zustand liegt in der Datenbank, nicht im Gespräch: „wo war ich?" ist hier eine Abfrage, kein Gedächtnis. Bewertungen entstehen als Entwurf; ein Band oben zeigt, wie viele offen sind, und gibt sie frei oder wirft sie weg (Grundsatz 38: kein Datenverlust durch Bedienkonzept, expliziter Freigabeschritt).

Weg und Rahmen

Route/tutor
MerkmalSTUDY — ein Raum im Lesesaal
Knoten im Rechtebaumgold.tutor, aus dem Studium abgeleitet (N149)
ZimmerLesesaal · Lautstärke 3

Gefragt wird der eigene Knoten (N149, 23.09.2026). Die Wege des Tutors sperren mit der eigenen Deklaration (bereichssperre(access, plugin) in server/tutor.ts, aufgaben.ts, begleiter.ts), und dieselbe Rechnung entscheidet über den Eintrag unter „Mehr", den Befehl „Tutor" der Schnellsuche und die Zeile in rechte_baum. Der Knoten hat keinen eigenen Grant: Der Baum leitet ihn aus dem Studium ab, mit dessen Herkunft und mit ueber: 'gold.study' im Entscheid — rechte_baum sagt also nicht „diesem Konto gewährt", sondern „über das Studium" —, und der Schalter ist der des Studiums. Einem Konto den Tutor zu nehmen, ohne ihm das Studium zu nehmen, geht deshalb noch nicht — das entscheidet Christian (00-rahmen.md, Was fehlt, Punkt 37).

Was man sieht

Das Sitzungsband oben: Thema · Aspekt · Stufe · Runde · wie viele Entwürfe offen sind. Seit dem 30.09.2026 (KI31) steht die Runde als Wort — „Erstbearbeitung“, „Nachaufgabe“ — und nicht als gespeicherter Wert; dieselben Wörter tragen die Spalten Runde und Typ der Tabellen.

Am Telefon klappt der Kopf zu (E-261014-tutor-telefon-klappen, 15.10.2026; Rückmeldung 4364b260): Das Band steht als eine Zeile ohne Stufe (Thema · Runde); Vorschläge, Entwürfe, Stand im Thema und Aspekte stehen je als Zeile mit ihrer Zahl und gehen auf Tippen auf. So beginnt die erste Aufgabe im ersten Bild. Eben angelegte Karten bleiben offen, weil ihre Rücknahme nur kurz gilt. Auf dem Schreibtisch steht alles offen da. Baustein Klappe (components/ui/Klappe.tsx), am Stapel klappbar; jsdom Klappe.test.tsx, Kartenstapel.test.tsx.

Die Vorschlagskarten des Begleiters (KI-261007-vorschlagskarten, 07.10.2026) stehen unter dem Kopf, vor der Zeile mit den offenen Entwürfen: nur die, die zum Tutor gehören — einen Aspekt oder eine Aufgabe anlegen, eine Übung beginnen. Sie kommen über den Anschluss ANSCHLUESSE.begleiter.Kartenstapel; ohne Begleiter steht nichts da. Was sie tun, sagt docs/seiten/begleiter.md, Abschnitt „Er schlägt vor, was fehlt“. Unter einem geholten Hinweis stehen die Karten, die das Modell zum Hinweis vorschlägt — etwa eine Aufgabe zu einem Thema ohne Aufgaben (KI-261007-gespraech-vorschlaege); ohne Modell keine.

Ein Thema ohne Aufgaben (KI-261007-luecken-vorschlaege) meldet sich, sobald der Tutor seinen Stand liest: Hat das Thema keine Aufgabe, gilt die Karte dem Thema, sonst dem ersten Aspekt ohne Aufgabe. Den Entwurf schreibt dieselbe Staffel wie „Aufgabe vorschlagen“ (KI31), gezählt wird aber gegen „Vorschläge aus neuem Material“, weil niemand darum gebeten hat. Je Thema höchstens ein Ruf am Tag; die Antwort des Stands wartet nicht darauf. Ohne Modell kommt „Aufgabe zu …“ ohne Text und nur mit „Bearbeiten“ (tutor/server/kartenluecken.ts, Herkunft aufgabenluecke).

Der Begleiter greift ein (KI-261007-tutor-eingreifen, 07.10.2026). Christian: „Der Begleiter muss direkter in den Tutor eingreifen.“ Nach jeder Bewertung und nach jeder neuen Aufgabe prüft der Tutor im Hintergrund, ob eine Karte fällig ist — die Bewertung wartet darauf nicht. Der Schirm liest die Karten danach sofort, nach 6 und nach 20 Sekunden noch einmal, damit eine Karte, die das Modell erst schreibt, ohne Neuladen erscheint.

Jede Ansicht hat eine Adresse (seit 30.09.2026, KI32): ?v= öffnet den Tutor gleich auf der genannten Ansicht, etwa /tutor?v=exercises-review auf den Wiedervorlagen. Darauf zeigt der Knopf der Eule, wenn sie liegende Wiedervorlagen meldet.

Drei Stufen: 1 Basis · 2 Beweis · 3 Transfer.

Ansichten: Offen · Wiedervorlagen · Fehleranalyse · Arbeitsblatt-Pool · Alle (seit 23.09.2026, N134, alle mit Reiter-Zeichen: tabelle bei Alle (seit N406; vorher uebersicht), frage bei Offen — eine offene Aufgabe ist eine offene Frage an den Lerner —, faellig bei Wiedervorlagen, suchen bei der Fehleranalyse, stapel beim Pool). Seit dem 28.09.2026 (RL12) zeigen Stand, Stufe und die Spaltenköpfe der Fehleranalyse Wörter statt der gespeicherten Werte („Argumentlücke“ statt argumentluecke), übersetzt in der Kontosprache; das Brett führt die Fehlerklassen dafür als Spalte mit. Über dem Brett steht seit dem 30.09.2026 die Ordnungsleiste wie über jedem Brett in Denotato (E02, 00-rahmen.md): sortieren, die Spalten nach einem anderen Feld bilden oder „ohne Gruppen“ als Kacheln — gemerkt je Ansicht.

Üben vorn (seit 22.10.2026, E-261022-startseite-tutor): Ohne ?v= öffnet der Tutor die Ansicht „Üben“, vorn im Umschalter mit dem Zeichen abspielen. Oben steht die führende Karte mit der nächsten Aufgabe, ihrem Thema, Stufe und Runde und dem Knopf „Üben“; die Erinnerung an Wiedervorlagen steht in ihr. Darunter drei Zahlkacheln in einer Reihe, auf jeder Breite drei Spalten: fällig, offen und der Schnitt der Bewertungen gegen zwölf Punkte („Ø von 12“). Dann nur das Fällige und Offene als kurze Liste mit dem Zustand als Pille und rechts Datum oder Stufe; Entwürfe und Vorschläge des Begleiters stehen nur, wenn es welche gibt, als Zeile mit ihrer Zahl, die aufklappt. Zuletzt drei Wege: „Alle Aufgaben“, „Arbeitsblatt“, „Fehleranalyse“. Die Tabelle und die Exportzeile stehen nur in den Tabellenansichten; Themenstand und Aspekte sind die Ansicht „Stand“ hinter ihnen, mit dem Zeichen diagramm. ?v=exercises-review öffnet weiter die Wiedervorlagen.

Die Erinnerung an die Wiedervorlagen (seit 21.09.2026, Punkt 7; Zeichen seit 23.09.2026, N134): Ist heute oder früher etwas fällig, steht über dem Sitzungsband eine Zeile — „2 Wiedervorlagen sind fällig — eine davon seit gestern oder länger. Ansehen" —, und ein Klick darauf schaltet auf den Reiter. Ist nichts fällig, steht dort nichts: Ein leerer Tag darf leer sein. Vor dem Satz steht seither ein Zeichen — faellig, oder bei Überfälligkeit ueberfaellig in Rot (Style-Guide §7.6); die Schrift selbst ist neutral, nur Rand und Gewicht bleiben zusätzlich verstärkt. Der Tag kommt aus useZeit() und nicht aus der Uhr des Servers; um Mitternacht sind das zwei verschiedene.

Der Themenstand als Bild (seit 22.09.2026, Punkt 8; Zeichen seit 23.09.2026, N134): Über dem Satz „… gilt als abgeschlossen" bzw. „… noch nicht abgeschlossen" steht jetzt ein Ring von 34 px, und darunter eine Reihe aus vier kleinen — Durchschnitt · Kriterien · Beweis ohne Hinweis · Aspekte auf Stufe 2 (der dritte nennt seit Wanderung 266 die Prüfaufgaben des Fachs, etwa „Fallbearbeitung ohne Hinweis“), die vier Bedingungen, die checkCompletion prüft. Der große Ring ist ihr Mittel und steht genau dann voll, wenn das Thema abgeschlossen ist; die Sätze darunter bleiben stehen, denn sie sagen das Warum, das kein Ring sagen kann. Bis dahin nannte der Themenstand nur die verfehlten Bedingungen — dass man bei dreien von vieren steht, stand nirgends. Ist das Thema abgeschlossen, steht vor dem Satz seit N134 ein erledigt (Festlegung D: erledigt heißt fertig/abgeschlossen); ist es das noch nicht, bleibt die Zeile wie schon vor N134 ganz ohne Zeichen und die Schrift neutral — „noch nicht abgeschlossen" ist kein Warnfall, sondern der gewöhnliche Zustand vor dem Abschluss, kein Zeichen also nach Festlegung E. Dieselbe Umstellung gilt für jeden Aspekt in der Liste darunter — dort stand das Zeichen (erledigt/hinweis) schon, nur seine Farbe kam bislang geerbt von der Schrift (currentColor) statt ausdrücklich vom Thema; jetzt ist sie es.

Unter den Aspekten steht das Feld „Neuer Aspekt …“ mit „Aspekt anlegen“ seit dem 10.10.2026 ohne eigenen Rahmen: Es steht schon im Kasten „Aspekte dieses Themas“, und ein Formularkasten darin war Karte in Karte (ES-261010-restliche-kartenraster, Guide §15.1). Sonst zeigt der Tutor keine Karte in einer Karte: Themenstand, Aspekte und das Band der Entwürfe sind Kästen nebeneinander auf der Fläche, die Aufgaben eine Tabelle, die Vorschlagskarten Zeilen.

Die Rechnung liegt als reine Logik in shared/fortschritt.ts (themenbedingungen, themenfortschritt) und wird von verify:tutor einzeln geprüft. Der Durchschnittsring misst gegen die Bestehensgrenze (9), nicht gegen die zwölf Punkte: Wer neun schafft, hat die Bedingung erfüllt, und ein Ring bei drei Vierteln erzählte von einer Hürde, die es nicht gibt. Ein Thema ohne Aspekte steht bei dieser Bedingung voll, weil der Abschluss sie dann nicht stellt.

Spalten: Aufgabe · Thema · Aspekt · Typ · Stufe · Runde · Schwierigkeit · Stand · Punkte · Ergebnis. Seit N134 trägt Stand ein Zeichen je Wert (frage gestellt, laeuft beantwortet, erledigt bewertet), und Schwierigkeit nur bei sehr_schwer ein warnung — der Normalfall bleibt still, wie bei der Wiedervorlage in tasks. Stufe bleibt ohne Zeichen: Es gibt in der Registry keinen passenden, freien Namen für „Basis/Beweis/Transfer" als Verlaufsstufen (siehe „Was fehlt"). Am Telefon steht jede Zeile als Karte, wie in den anderen Datenansichten; der Kopf mit den Sortierknöpfen ist dort nur vorgelesen, und seit dem 27.10.2026 stehen seine Knöpfe untereinander im Bild statt bis 426 Pixel daneben (F-261027-tutor-tabelle-breit). Der Umschalter der Ansichten rollt am Telefon in seiner Kapsel, wenn das Wort der gewählten Ansicht lang ist, etwa „Wiedervorlagen“; Suchfeld und Umschalter bleiben in der Spalte. Auf dem iPad passt die Tabelle „Alle“ in ihre Spalte.

Die vier Kriterien einer Bewertung, je 0–3: Definition · Struktur · Notation · Transfer.

Die Hinweise zu Struktur und Notation sind fachneutral: „Tragender Aufbau, jeder Schritt begründet“ und „Fachsprache, Zeichen, Form“.

Aufgabenarten, Fehlerklassen und das Wort der Stufe 2 je Fach (VA-261007-tutor-aufgabenarten-je, Wanderung 266): Der Schirm fragt die Listen des Fachs, zu dem das Thema gehört (useTutorfach, Bild in shared/tutorbild.ts); ein Fach ohne eigene Liste erbt die von „Andere“. Daraus kommen die Auswahl „Typ“ im Anlegeformular, die Fehlerklassen im Bewertungsfeld (aus dem Fach der Aufgabe) und das Wort der Stufe 2 im Sitzungsband, im Stufenfeld des Formulars, im Filter und in der Spalte „Stufe“ — in der Mathematik „Beweis“, in einem Fach mit Fallbearbeitung „Fallbearbeitung“. Die Spalten „Typ“ und „Fehlerklassen“ der Tabellen nennen jede Kennung des Katalogs beim Wort, auch die anderer Fächer; die Spalte „Stufe“ folgt dem Fach der Sitzung, weil eine Spalte ein Wort je Wert hat. Was eine Aufgabe schon trägt, bleibt in der Auswahl, auch wenn das Fach es ausgeblendet hat. Ohne Antwort gelten die Listen der Mathematik, wie vor Wanderung 266; ein kaputter Eintrag fällt allein weg. In der Mathematik: Definitionsmissbrauch · Beweisstruktur · Quantoren · Notation · Rechenfehler · Argumentlücke.

Der Server fällt anders zurück als der Schirm: Ein Thema ohne Fach, ein Thema, das der Leser nicht sieht, und ein Fach ohne eigene Liste bekommen die Listen von „Andere“ (leseTutorfachZumThema). Eine neue Aufgabe mit einer Art, die das Fach nicht kennt oder ausgeblendet hat, weist er mit aufgabenart_unbekannt_error ab — in der Rechtswissenschaft ohne eigene Liste also „beweis“.

Das Wort der Stufe 2 ist das Wort der Prüfaufgabe des Fachs, wenn es genau eine gibt; bei keiner oder mehreren heißt sie „Prüfaufgabe“, weil „Stufe Fallbearbeitung oder Klausur“ wie zwei Stufen klänge. Basis und Transfer heißen in jedem Fach so (stufenwortImFach). Die Kennung beweis der Stufe bleibt.

Fertig ist ein Thema mit einer Aufgabe einer Prüfart des Fachs, ohne Hinweis bestanden. Fehlt sie, nennt der Themenstand den Grund mit den Wörtern des Fachs, mehrere mit „oder“ verbunden: „Keine Aufgabe der Art „Beweis“ ohne Hinweis bestanden.“ Hat ein Fach keine sichtbare Prüfaufgabe, steht dort „Das Fach hat keine Prüfaufgabe; kein Thema kann fertig werden.“; die Pflege lässt eine solche Liste nicht speichern.

Was das Modell vom Fach erfährt: Jede Anweisung des Tutors nennt das Fach beim Wort („im Fach Rechtswissenschaft“, bis dahin stand dort „Mathematikaufgabe“) und dessen sichtbare Arten und Fehlerklassen, je Zeile Kennung und Beschreibung, in der Reihenfolge des Fachs. Schlägt das Modell eine Aufgabe mit einer Art vor, die nicht darin steht, ist der Vorschlag nicht lesbar, und es kommt die Regelfassung; eine fremde Fehlerklasse in einem Bewertungsvorschlag fällt allein weg. Die Stufensätze der Regelfassung tragen das Wort des Fachs: „Stufe Basis: es geht um Begriffe und Grundfertigkeiten, noch nicht um die Stufe Beweis.“ und „Stufe Beweis: gefragt ist eine vollständige, Schritt für Schritt begründete Bearbeitung.“ — in einem Fach mit Fallbearbeitung „Fallbearbeitung“ statt „Beweis“.

Das Fehlerbild, zweimal gefragt (seit 22.09.2026, Punkt 14): Unter „Woran es bisher am häufigsten scheitert" stehen die Klassen dieses Themas als Balken, und darunter — nur wenn sie etwas anderes sagen — dieselben Balken unter „Und über alle Themen hinweg:". Wer ein einziges Thema bearbeitet hat, sieht den zweiten Block nicht: Zwei gleiche Bilder untereinander liest man beim dritten Mal nicht mehr. Die Rechnung liegt in shared/fehlerbild.ts (fehlerbalken, gesamtbild) und misst am größten Wert der Liste; vorher stand sie in der Zeile, die sie zeichnete, und maß gegen den ersten — kam die Liste einmal unsortiert an, ging ein Balken über die volle Breite hinaus, ohne dass man es dem Ausdruck ansah.

Je Versuch oder je Aufgabe (seit 30.09.2026, Punkt 30): Über dem Fehlerbild steht eine kleine Wahl „je Versuch | je Aufgabe". „Je Versuch" zählt jede Abgabe — dieselbe Aufgabe dreimal steht dreimal im Balken —, „je Aufgabe" jede Aufgabe einmal. Die Überschrift wechselt mit („Woran es bisher am häufigsten scheitert, je Versuch gezählt:" bzw. „Welche Fehler die meisten Aufgaben betreffen:"), die Balken ordnen sich nach der gewählten Zahl. Die Wahl fehlt, wo beide Bilder gleich wären.

Der Verlauf einer Aufgabe (seit 30.09.2026, Punkte 12 und 24): Im Bewertungsfeld steht über den Kriterien „Verlauf: N Versuche". Aufgeklappt zeigt er jeden freigegebenen Versuch, neueste zuerst: Datum und Uhrzeit, Stand, „x von 12 Punkten", darunter die vier Teilwerte, dann „Hinweis genutzt", „Lösung gesehen" und die Fehlerklassen, zuletzt „Beleg ansehen" für den Beleg dieses Versuchs. Geholt wird erst beim Aufklappen; nach einer Freigabe holt ein offener Verlauf neu. Ohne Versuch fehlt die Zeile. Seit Punkt 6 steht hinter den Punkten die Dauer („· Dauer 25 Min.“, „· Dauer 1 Std. 15 Min.“, unter einer Minute „unter 1 Min.“), wo sie gemessen wurde; wo nicht, steht nichts — keine „0 Min.“. Über den Versuchen steht seit N436 das Tempo — der erste und der letzte gemessene Versuch nebeneinander: „Erster Versuch 40 Min. für 6 von 12 Punkten, letzter 22 Min. für 9 von 12 Punkten.“ Die Zeile erscheint erst ab zwei gemessenen Versuchen. Liegen ältere Versuche ohne Messung davor, heißt es „Erster gemessener Versuch“; fehlen einer Seite die Punkte, nennt die Zeile nur die Dauer. Sie urteilt nicht — kein „schneller“, kein „besser“ —, denn eine kürzere Zeit für weniger Punkte ist kein Fortschritt. Sortiert wird nach dem Zeitpunkt des Versuchs, nicht nach der Reihenfolge der Antwort (tempozeile in Versuchsverlauf.tsx).

Die Uhr im Bewertungsfeld (seit 30.09.2026, Punkt 6): Über den Punkten und „Als Entwurf bewerten“ steht „Dauer in Minuten“ mit einem schmalen Feld und daneben „gemessen, solange die Seite zu sehen war: … — leer lassen, dann gilt die Messung“. Die Uhr läuft ab dem Augenblick, in dem das Feld aufgeht, denn dort steht die Aufgabe — aber nur, solange der Reiter sichtbar ist (seit dem Rest vom 30.09.2026): Liegt er im Hintergrund, ein anderer Reiter vorn oder das Fenster minimiert, hält sie an und läuft weiter, sobald er wieder vorn ist. Geht das Feld in einem verdeckten Reiter auf, beginnt sie erst, wenn er zu sehen ist. Der Platzhalter zeigt die gemessenen Minuten; die Anzeige zieht alle 15 Sekunden nach. Leer gelassen geht die Messung mit, eine eingetragene ganze Zahl berichtigt sie (auf Papier angefangen, am Rechner offen gelassen, ohne daran zu sitzen). Alles andere — „1,5“, „-3“, Buchstaben — bewertet nicht, sondern steht als Fehler da: „Die Dauer ist eine ganze Zahl Minuten, null oder mehr.“ Nach einer Bewertung und beim Wechsel der Aufgabe zählt die Uhr von vorn, und das Feld ist wieder leer.

Drei Ecken des Begleiters (seit 21.09.2026, NB09 Stufe 1; die dritte seit 30.09.2026, KI31) — zwei unter der Abgabe, über dem Bewerten: Hinweis und Bewertungsvorschlag (seit dem 15.10.2026 in dieser Reihenfolge, B22); die dritte im Anlegefach „Neu“: Aufgabenvorschlag. Jede zeigt oben ihren Tageszähler („3 von 40 heute"), darunter einen Knopf, darunter den Text — und unter dem Text immer die Herkunft: entweder „Vom Modell vorgeschlagen — bewertet wird von dir" oder die eine Zeile, warum es die Regelfassung wurde. Ist kein Modell bereit, hängt am Zähler „ · ohne Modell“ (bis KI16 „ · Regelfassung“). Endet ein Hinweis an seiner Längengrenze, steht unter ihm in Warnfarbe „Der Hinweis ist an seiner Längengrenze abgeschnitten.“ (seit dem 04.10.2026, KI39); er gilt trotzdem, denn was da steht, hat das Modell geschrieben.

Der Aufgabenvorschlag (seit 30.09.2026, KI31, N421): Hat die Sitzung ein Thema, steht im Anlegefach der Knopf „Aufgabe vorschlagen“. Er fragt nach einer neuen Aufgabe beim Aspekt und auf der Stufe, die dran sind — dieselbe Rechnung wie „Wo war ich?“. Mitgeschickt werden Thema, Aspekt, Stufe, Runde, die Fehlerklassen der bisherigen Versuche und die Titel der vorhandenen Aufgaben, nie ihre Stellung oder Lösung. Die Antwort steht als Text da, mit der Herkunftszeile, und füllt das Formular erst auf „Ins Formular übernehmen“ — was schon getippt war, wird nicht vorher überschrieben. Dann erscheinen unter dem Titel die Felder Aufgabenstellung, Typ, Schwierigkeit und Erwartetes Ergebnis, darüber eine Zeile „Aus dem Vorschlag · Aspekt … · Runde“. Angelegt wird erst mit „Anlegen“, mit allem, was dort steht; „Vorschlag verwerfen“ nimmt die Felder zurück. Ohne Modell kommt die Regelfassung: ein Satz, welcher Aspekt auf welcher Stufe dran wäre, und übernommen werden nur Stufe, Runde und Aspekt — der getippte Titel bleibt stehen. Ohne Thema der Sitzung gibt es den Knopf nicht.

Die Grenzen dieser Modellaufrufe stehen zusammen mit denen der freien Frage unter Admin → Modell. Dort lassen sie sich je Abo-Stufe ändern — seit dem 30.09.2026 (KI33) auch Tagesdeckel und Antwortlänge jedes Tutor-Anlasses (ab Werk 40 Vorschläge, 60 Hinweise, 20 Aufgabenvorschläge am Tag); der Tutor selbst zeigt weiter nur den gerade wirksamen Zähler und Grund.

Sieben Gründe gibt es, und alle sieben stehen als Satz da: kein Schlüssel hinterlegt, Tagesgrenze erreicht, Monatsbudget der Instanz aufgebraucht, Aufgabe oder Abgabe zu lang, Dienst antwortet nicht, Antwort nicht lesbar (die beiden mittleren seit dem 24.09.2026, A34) und seit dem 04.10.2026 Antwort verweigert (KI39): „Das Modell hat die Antwort verweigert. Der Aufruf wird trotzdem angerechnet.“ Was das Modell vor der Verweigerung schrieb, gilt nicht als Antwort, auch wenn es lesbar wäre. Der Knopf bleibt in allen sieben Fällen drückbar — die Regelfassung ist nicht der Trostpreis, sondern eine zweite Auskunft: die Kriterien der Rubrik, die bei diesem Thema dauerhaft schwachen darunter, und die Fehlerklassen, die dort bisher aufgetreten sind.

Wie lang die Frage sein darf, steht je Anlass im Anlassregister des Begleiters, begleiter/shared/anlaesse.ts (bis 24.09.2026 tutor/shared/anlaesse.ts), unter grenzeEingabeZeichen: 8000 Zeichen für den Bewertungsvorschlag — gut zwei Seiten Beweis samt Aufgabe und Umfeld —, 4000 für den Hinweis und ebenso 4000 für den Aufgabenvorschlag. Das sind die Werkswerte: Seit KI44 (N501) stellt die Verwaltung die Grenze der Frage je Abo-Stufe ein, wie seit KI33 Tagesdeckel und Länge der Antwort — unter Admin → Modell im Feld „Zeichen Frage“, höchstens das Vierfache der Zahl ab Werk. Gezählt werden Zeichen, nicht Bytes; eine längere Frage wird weder gekürzt noch geschickt und kostet nichts. Der Schirm des Tutors zeigt die Grenze noch nicht, die Budget-Antwort trägt sie als grenzeEingabeZeichen, und zwar die der Stufe des Kontos.

Was man tun kann

Reiter ordnen (OE10, N500): Wer Vorgaben für alle setzen darf, ordnet und blendet die Reiter über „Bearbeiten“ im Kopf; die Folge steht in oberflaeche.reiter unter tutor (die Ansichten; Abschnitte hat der Schirm nicht) (Rahmen §3).

ElementWas passiert
Aufgabe anlegen („Neue Aufgabe …", Stufe)legt eine Übungsaufgabe an; nach einem übernommenen Vorschlag mit Aufgabenstellung, Typ, Schwierigkeit, Erwartetem Ergebnis, Aspekt und Runde
Aufgabe vorschlagen (im Anlegefach, nur mit Thema der Sitzung)seit 30.09.2026 (KI31): fragt das Modell nach einer neuen Aufgabe beim Aspekt und auf der Stufe, die dran sind; ohne Modell nennt die Regelfassung Aspekt und Stufe. Legt nichts an
Ins Formular übernehmenträgt den Vorschlag ins Anlegeformular — erst jetzt, damit Getipptes nicht vorher verschwindet; ohne Modell nur Stufe, Runde und Aspekt
Vorschlag verwerfennimmt Vorschlag und übernommene Felder zurück, ohne anzulegen
Aspekt anlegen („Neuer Aspekt …")eine zählbare Teilfähigkeit des Themas
Filterleiste (Stand · Stufe · Thema, über der Tabelle)seit 30.09.2026 (Punkt 29): engt die Tabelle ein, jede Wahl mit ihrer Zahl — und das Arbeitsblatt nimmt genau die Zeilen, die danach stehen
Arbeitsblatt als PDF / als LaTeX / als Markdownseit dem 13.10.2026 (W25) steht „Arbeitsblatt als PDF“ vorn: Der Server setzt dieselbe Auswahl über den Bereich LaTeX und gibt ein fertiges PDF zurück; während des Satzes dreht ein Kreisel im Knopf, und der Knopf nimmt keinen zweiten Klick. Gibt es kein PDF — Bereich LaTeX aus, Satzdienst fehlt, Sätze des Tages aufgebraucht, TeX scheitert an einer Formel —, sagt die rote Zeile warum und dass „als LaTeX“ und „als Markdown“ weiter gehen; seit dem 28.09.2026 erst da, wenn es eine Aufgabe gibt — mit Knöpfen, Haken und Kopfzeile (RL02); seit dem 30.09.2026 nimmt es die Zeilen, die die Filterleiste übrig lässt, und die Zeile daneben nennt vorher, wie viele Aufgaben auf dem Blatt landen (Punkt 29); holt die Aufgaben und setzt das Blatt hier, im Browser, und lädt es herunter — das Datum in der Kopfzeile kommt seit dem 21.09.2026 aus useZeit() und nicht mehr aus der Uhr des Servers (I04); seit dem 09.10.2026 stehen auch die Wörter auf dem Blatt in der Sprache des Kontos, und babel ist dann english statt ngerman (VA-261009-arbeitsblatt-sprache); seit dem 10.10.2026 setzt das LaTeX-Blatt das Papierformat der wirksamen Region: letterpaper für en-US, sonst a4paper (VA-261010-arbeitsblatt-letter), Markdown kennt kein Papier
mit Lösungen (Haken neben den beiden Knöpfen)seit 21.09.2026: setzt hinter die Aufgaben den Abschnitt „Ergebnisse" und hängt den Zusatz an den Dateinamen, damit Blatt und Lösungsblatt nicht dieselbe Datei sind. Vorgabe aus — ein Übungsblatt mit den Ergebnissen darunter merkt man erst, wenn es gedruckt ist. Seit dem 22.09.2026 nennt der Abschnitt nur die Aufgaben, zu denen ein Ergebnis hinterlegt ist, jede unter ihrer Nummer vom Blatt, und darunter einen Satz, zu wie vielen nichts hinterlegt ist; gibt es kein einziges, entfällt der Abschnitt — in beiden Formaten gleich (Punkt 25)
nur Aufgaben mit Ergebnis (Haken, erscheint nur bei „mit Lösungen")seit 22.09.2026: lässt das Blatt gleich nur aus den Aufgaben entstehen, zu denen ein Ergebnis hinterlegt ist — mit dem Filter entfällt der Satz darunter, und was auf dem Blatt steht, hat eine Antwort. Gefiltert wird in der Abfrage (onlyWithResult), nicht im Browser; ein Feld mit einem einzigen Leerzeichen zählt dabei als leer (btrim). Bleibt nach dem Filter nichts übrig, wird gar nichts geladen und der Grund steht da (Punkt 25)
Kopfzeile: TT.MM.JJJJ (Nebentext neben den Knöpfen)seit 22.09.2026: zeigt vor dem Klick, welches Datum auf dem Blatt landen wird — in der eingestellten Zone, dieselbe Rechnung, die danach auf generatedAt angewandt wird (Punkt 20). Gehen Gerät und Server über eine Mitternacht hinweg auseinander, steht nach dem Laden eine Zeile darunter, die beide Tage nennt — die Vorschau wird nicht stillschweigend widerlegt
Zeile anklickenöffnet das Bewertungsfeld. Seit dem 15.10.2026 (B22, KN-261015-tutor-abgabe-zuerst) in der Reihenfolge des Übens: Aufgabenstellung, Abgabe, Beleg und Abschrift, „Hinweis holen“, „Vorschlag holen“, dann „Zur Bewertung“ und „Schließen“. Verlauf, Kriterien, Marken, Fehlerklassen, Dauer und „Als Entwurf bewerten“ gehen erst mit „Zur Bewertung“ auf — oder mit „Zahlen übernehmen“ —, nicht von selbst beim Tippen, damit das Feld nicht unter dem Cursor springt. Eine Abgabe auf Papier braucht keinen Text
Abgabe („Abgabe (Text, TeX, Notiz) …")die Abschrift dessen, was gelöst wurde
Foto oder PDF anhängenhängt den Beleg an den Versuch. Seit 21.09.2026 (V05) prüft der Schirm vorher, was er losschickt, und hinterher, was ankam: ein Programm oder eine leere Datei wird mit Namen abgelehnt, ein zweiter Klick während des Ladens tut nichts, dieselbe Datei lässt sich nach einer Ablehnung erneut wählen — und kommen weniger Byte an als losgeschickt wurden, gilt die Datei nicht als Beleg, auch wenn der Server Erfolg meldet
Foto abschreiben / PDF abschreiben / Beleg abschreiben (unter dem Beleg)seit 30.09.2026 (Punkt 2), das PDF seit dem Rest vom selben Tag: schickt den frisch angehängten Beleg, sonst den des letzten Versuchs, ans Modell und zeigt die Abschrift in LaTeX mit „Vom Modell abgeschrieben — prüf es gegen dein Blatt, bevor du bewertest.“ Der Knopf heißt nach dem Beleg — „Beleg“ beim alten, dessen Art der Schirm nicht kennt. Ein zu großes Foto, ein PDF über 21,5 MiB oder 100 Seiten, ein kaputtes oder verschlüsseltes PDF bekommen einen Satz, warum, ein Beleg, dessen Datei fehlt, keinen Knopf — und keins davon kostet etwas. Eigener Tagesdeckel (10 ab Werk, je Stufe einstellbar); das erwartete Ergebnis geht nie mit, damit das Modell abschreibt und nicht verbessert. Steht auf dem Blatt keine Lösung zu der Aufgabe oder lässt sich gar nichts lesen, antwortet das Modell mit einer Marke, und der Schirm zeigt nur einen Satz, warum — ohne Text zum Übernehmen; der Ruf zählt, weil das Modell nachgesehen hat. Endet die Abschrift an ihrer Längengrenze, steht darunter in Warnfarbe „Die Abschrift ist unvollständig: Sie endet an ihrer Längengrenze.“ (KI39)
In die Abgabe übernehmensetzt die Abschrift ins Feld „Abgabe“ — erst auf Druck; steht dort schon Text, hängt sie sich darunter, statt ihn zu überschreiben. Ohne Modell gibt es nichts zu übernehmen, aber den Grund. Eine unvollständige Abschrift bekommt eine letzte Zeile als TeX-Kommentar, % Abschrift unvollständig: Sie endet an ihrer Längengrenze, das Blatt geht weiter. — sie wird nicht gesetzt, aber wer später bewertet, sieht, dass das Blatt weiterging (KI39)
Dauer in Minuten (über „Als Entwurf bewerten")seit 30.09.2026 (Punkt 6): leer gilt die Messung seit dem Öffnen, gezählt nur, solange der Reiter sichtbar ist; eine ganze Zahl berichtigt sie; eine krumme Eingabe bewertet nicht
Verlauf: N Versuche (im Bewertungsfeld, über den Kriterien)seit 30.09.2026 (Punkte 12, 24): klappt alle freigegebenen Versuche der Aufgabe auf, neueste zuerst — je Versuch Stand, Punkte, Dauer (Punkt 6), Teilwerte, Marken, Fehlerklassen und „Beleg ansehen" für dessen eigenen Beleg; „Verlauf ausblenden" klappt zu; darüber seit N436 das Tempo — erster und letzter gemessener Versuch mit Dauer und Punkten, ab zwei gemessenen
je Versuch / je Aufgabe (Wahl über dem Fehlerbild)seit 30.09.2026 (Punkt 30): stellt um, was das Fehlerbild zählt; erscheint nur, wenn es einen Unterschied macht
Beleg des letzten Versuchs ansehenseit 21.09.2026: öffnet das angehängte Foto oder PDF in einem neuen Reiter. Die Kennung kam mit jeder Zeile mit, seit es die Spalte gibt — gezeigt hat sie kein Schirm, und damit war jeder Beleg abgelegt und unauffindbar (V05)
Vorschlag holenfragt das Modell nach vier Zahlen und einer Begründung; ohne Modell kommt die Regelfassung mit dem Grund. Gelesen wird seit dem 04.10.2026 streng (KI39, lieseBewertung): Jede Zahl muss eine ganze Zahl von 0 bis 3 sein, als Zahl oder als Ziffernkette; fehlt eine, ist sie leer, ein Wahrheitswert, krumm oder größer, gilt die ganze Antwort als nicht lesbar, statt zu einer Punktzahl zu werden, die das Modell nie gegeben hat
Zahlen übernehmenträgt die vorgeschlagenen Zahlen in die Felder — bewertet nicht; erscheint nur, wenn es Zahlen gibt
Hinweis holenein Schubs zur Aufgabe, nie die Lösung; ohne Modell aus Aspekt, Stufe und den bisherigen Fehlerklassen
Bewertenvier Zahlen 0–3 → Punkte, bestanden/nicht, nächste Stufe und Runde, mit Grund. Seit dem 15.10.2026 (B22) ist kein Kriterium vorgewählt: Bis jedes einen Wert hat, steht statt der Punkte „Jedes Kriterium braucht einen Wert.“, und „Als Entwurf bewerten“ ist gesperrt
Freigebenmacht alle Entwürfe verbindlich — erst danach zählen sie für Fortschritt und XP. Danach steht unten die Rücknahmeleiste (Q05)
Verwerfenwirft alle Entwürfe weg; am Bestand ändert sich nichts. Seit dem 23.09.2026 in zwei Klicks: der erste fragt, erst „ja, endgültig" löscht die Entwürfe aus study.exercise_attempts, „doch nicht" lässt sie stehen (Q09, N165). Einen Papierkorb für Entwürfe gibt es nicht; der Tooltip sagt „nicht zurückzuholen"
Schließenschließt das Panel (auch Escape)
Zurücknehmen (Leiste unten, oder Strg/Cmd + Z)nimmt die letzte Freigabe zurück — zehn Minuten lang; die Bewertungen sind danach wieder Entwürfe und die XP wieder weg (Q05)

Die Rücknahmeleiste (Q05, 21.09.2026)

„Freigeben" war hier der einzige Schritt ohne Rückweg. „Verwerfen" daneben wirft weg, was noch Entwurf ist — nach der Freigabe ist es das nicht mehr, und die Bewertungen zählen für den Themenabschluss und bringen XP. Die beiden Knöpfe stehen nebeneinander im selben Band; wer den falschen trifft, musste bis dahin jede Bearbeitung einzeln zurückbauen.

Seit dem 21.09.2026 schwebt danach unten am Schirm eine schmale Leiste aus Glas: „Bearbeitungen freigegeben · 5 · noch 9 Minuten", daneben Zurücknehmen; Strg/Cmd + Z tut dasselbe. Die Freigabe geht als eine Handlung zurück, so wie sie als eine stattfand — alle Entwürfe sind wieder Entwürfe, die Gutschriften wieder weg. Eine Zahl statt eines Namens: Bei fünf Bearbeitungen wäre der Titel der ersten eine Auskunft, die mehr verschweigt als sagt.

Scheitert eine dieser Anfragen, bleibt der jeweilige Knopf bedienbar (F28b, 23.09.2026): „Foto oder PDF anhängen", „Vorschlag holen", „Hinweis holen" und „Bewerten" halten im Bewertungsfeld vier unabhängige Riegel über useBusyLock, die in einem try/finally freigeben, gleich, ob die Anfrage einen Fehlertext liefert oder wirft — vorher blieb der jeweils betroffene Knopf bis zum Neuladen gesperrt.

Woher die Daten kommen

TUTOR_SESSION · TUTOR_EXERCISES · TUTOR_EXERCISE_SAVE · TUTOR_GRADE · TUTOR_COMMIT · TUTOR_DISCARD · TUTOR_TOPIC_STATUS · TUTOR_ASPECTS · TUTOR_ASPECT_SAVE · TUTOR_WORKSHEET · TUTOR_WORKSHEET_PDF (seit 13.10.2026, W25) · TUTOR_BUDGET · TUTOR_SUGGEST · TUTOR_HINT · TUTOR_PROPOSE (seit 30.09.2026, KI31) · TUTOR_ATTEMPTS (seit 30.09.2026, Punkte 12 und 24: alle eigenen, freigegebenen Versuche an einer sichtbaren Aufgabe, neueste zuerst, mit Beleg und Dauer je Versuch und ohne Abgabetext) · TUTOR_TRANSCRIBE (seit 30.09.2026, Punkt 2: schreibt das Foto einer Abgabe als LaTeX ab, legt nichts an). Von außen sechzehn MCP-Werkzeuge — seit dem 30.09.2026 auch tutor_arbeitsblatt für TUTOR_WORKSHEET, tutor_aufgabe_vorschlagen für TUTOR_PROPOSE, tutor_versuche für TUTOR_ATTEMPTS und tutor_abschrift für TUTOR_TRANSCRIBE; seit dem 13.10.2026 tutor_arbeitsblatt_pdf für TUTOR_WORKSHEET_PDF.

Die Dauer eines Versuchs (seit 30.09.2026, Punkt 6, Wanderung 200) steht in study.exercise_attempts.duration_seconds, in Sekunden. TUTOR_GRADE nimmt sie als durationSeconds an — eine ganze Zahl, null oder mehr; eine negative oder krumme Zahl weist die Route ab und schreibt nichts. NULL heißt „nicht gemessen“: So bleiben alle älteren Versuche und jeder, den der MCP ohne Zeit bewertet. Eine Null stünde für „keine Zeit gebraucht“ und wäre falsch. Eine obere Grenze setzt nur der Spaltentyp; was eine glaubhafte Dauer ist, entscheidet der Mensch im Feld.

Themenstand und Aspekte rechnen seit dem 30.09.2026 wie die Bewertung. Der Themenstand nimmt die gespeicherte Punktsumme des Versuchs (points), nicht eine zweite Rechnung aus den Kriterien, und ein unbekannter Wert zählt nicht als null. Ein Aspekt gilt als nachgewiesen nach derselben Regel wie der Themenabschluss (checkCompletion): Stufe Beweis, mindestens neun Punkte, ein geholter Hinweis kostet seinen Punkt, und es zählen nur freigegebene Versuche. Vorher konnte ein Aspekt „nachgewiesen“ heißen, während der Abschluss ihn nicht gelten ließ.

Dazu RUECKNAHME und RUECKNAHME_ZURUECK für die Leiste unten — dieselben zwei Wege wie bei den To-Dos, ohne Kennung und ohne Bereichsnamen. Der Schirm weiß nicht, was er zurücknimmt; er zeigt, was der Server ihm sagt. Über den MCP geht das nicht: tutor_freigeben gibt frei, und ein Modell, das seine eigene Freigabe zurücknähme, hätte einen Kreis. Wer über den MCP freigibt, korrigiert über den MCP.

TUTOR_TOPIC_STATUS nennt seinen Nenner selbst (seit 22.09.2026, Punkt 26). Die Antwort trägt zusätzlich aspect_count — wie viele Aspekte das Thema hat — und error_counts_all — dieselbe Fehlerzählung wie error_counts, nur ohne das Thema als Bedingung. Der Ring „Aspekte auf Stufe 2" hing vorher an zwei Antworten: TUTOR_ASPECTS lieferte die Liste, der Themenstand nur die fehlenden, und der Schirm nahm Math.max von beidem. Fiel die eine Abfrage aus, stand dort eine Zahl, die niemand geschickt hatte.

TUTOR_EXERCISE_SAVE ändert nur, was mitgeschickt wird (F38, 23.09.2026). Weglassen lässt stehen, null leert — für Aufgabentext, Thema, Aspekt, Art, Stufe, Format, Schwierigkeit und Ergebnis; Runde und uniquelySolvable lassen sich setzen, nicht leeren. Bis dahin löschte ein tutor_aufgabe_speichern({id, title}) den Rest der Aufgabe, setzte die Runde zurück und nahm sie still aus dem Arbeitsblatt-Pool. Der Schirm berührt das nicht: er legt nur an, und dort gelten die Vorgaben wie bisher.

TUTOR_WORKSHEET nimmt onlyWithResult (seit 22.09.2026, Punkt 25) — ein Schalter, kein zweiter Weg: dieselbe Abfrage, eine Bedingung mehr.

TUTOR_WORKSHEET gibt Aufgaben, keinen Text (seit 21.09.2026, I04). Die Antwort trägt exercises, title, withSolutions, format und generatedAt — den Zeitpunkt als ISO-Text in UTC. Gesetzt wird das Blatt in plugins/tutor/client/anfragen.ts (blattsatz), mit denselben beiden Funktionen toLatex/toMarkdown aus @shared, die vorher der Server gerufen hat. Der Grund steht in Grundsatz 54: der Server kennt weder die Zone noch die Sprache des Lesers, und ein Datum, das er selbst formatiert, ist deshalb immer das Datum von irgendwem anders.

TUTOR_WORKSHEET_PDF gibt ein fertiges PDF (seit 13.10.2026, W25). Dieselbe Auswahl wie TUTOR_WORKSHEET, dazu datum (der Tag, wie die Vorschau ihn nennt), sprache und papier vom Schirm — der Grundsatz 54 gilt weiter, der Server formatiert kein Datum. Er baut die Quelle mit toLatex und gibt sie dem Anschluss ANSCHLUESSE.latex.setzeQuelle; der Tutor kennt latex/server nicht. Gesetzt wird mit pdfLaTeX beim Abruf, in der Abschirmung und Warteschlange des Editors. Ein Cache je Konto und Quelle im Speicher der API (32 MiB, je Blatt höchstens 8 MiB, nach einem Neustart leer) gibt dasselbe Blatt ein zweites Mal ohne Satz zurück; nur ein Lauf zählt gegen die Sätze je Tag der Abo-Stufe (LX25), auch ein gescheiterter, und ein gescheiterter kommt nicht in den Cache. Die Antwort trägt filename, count, pdf (Base64, null bei leerer Auswahl), ausCache, saetzeHeute und saetzeJeTag. Absagen: 403 tutor_blatt_pdf_ohne_latex_error (Bereich LaTeX aus, für das Konto oder die Instanz), 503 latex_dienst_fehlt_error, 429 latex_satz_laeuft_error und latex_saetze_aufgebraucht_error, 422 tutor_blatt_pdf_satzfehler_error.

Der Beleg läuft über die Ablage, nicht über den Tutor. Hochgeladen wird mit FILES_UPLOAD (Multipart, an der AES-Strecke vorbei), angesehen mit FILES_ITEM; der Tutor merkt sich nur die Kennung in submission_file_id und prüft beim Bewerten, dass sie dem eigenen Konto gehört. Die Grenze kennt er nicht — und muss sie auch nicht: Er vergleicht, wie viele Byte er losgeschickt hat, mit der Zahl, die zurückkommt. Das fängt jede Kürzung ab, gleich wie die Schranke des Servers gerade eingestellt ist (V05).

Der Begleiter hat keinen eigenen Datenweg. Was das Modell über eine Aufgabe erfährt, holt dieselbe Abfrage, die auch die Liste bekommt — withUserScope, visibleTo, dieselbe Bereichssperre — in tutor/server/modellhilfe.ts, das seit NB09 Stufe 2 (24.09.2026) den Ruf ans Modell nicht mehr selbst ausführt, sondern über den Anschluss ANSCHLUESSE.begleiter an begleiter/server/begleiter.ts gibt. Was mitgeht, steht je Anlass in plugins/begleiter/shared/anlaesse.ts (bis 24.09.2026 plugins/tutor/shared/anlaesse.ts) unter umfeld, und die Adresse steht in shared/config/aussenverbindungen.ts (Grundsatz 52). Was gerufen wurde, steht in personal.model_calls — ohne Inhalt (B22: der Umriss, nicht der Text); der Zähler ist eine Abfrage darauf. Seit KI03 (Wanderung 136) trägt jede Zeile auch ihre Kenndaten: die Länge der Frage und des Kontexts in Zeichen (bei den Anlässen des Tutors ist der Kontext 0), die Länge der Antwort, wie sie ankam (leer, wenn der Ruf ungewiss ausging), Modell und Aufwand der Anfrage (leer, wenn nichts hinausging), die Abo-Stufe zum Zeitpunkt des Aufrufs und ob Sensibles mitging. Längen, nie Worte. Der Export nimmt die Zeilen mit, der Import schreibt sie nicht zurück (NICHT_IMPORTIERT): Ihre Kosten zählen gegen den Monatsdeckel der ganzen Instanz, und eine bearbeitete Datei fälschte sie.

Der Deckel zählt seit dem 24.09.2026 auch Geld (A34, Wanderung 109). Jeder Aufruf ist genau eine Zeile: Vor dem Ruf wird sie als pending mit den höchsten möglichen Kosten eingetragen (Eingabe in Bytes plus Rahmung, dazu max_tokens), danach auf ihren Ausgang und ihre wirklichen Kosten gesetzt (cost_micro_usd, Millionstel US-Dollar). Prüfen und Vormerken geschehen in einer Transaktion unter einer Sperre (pg_advisory_xact_lock), der Ruf selbst außerhalb — so können zwei gleichzeitige Aufrufe keinen Deckel gemeinsam überschreiten. Gegen den Tagesdeckel zählen answered, unreadable und pending; gegen den Monatsdeckel der Instanz (Vorgabe 20 €) die Kosten aller Konten seit dem Ersten, über personal.model_cost_this_month(). Preise hin und zurück (US-Cent je Million Token), Kurs (Euro-Cent je Dollar, von Hand gepflegt) und Monatsdeckel sind Instanzwerte, gelesen allein in begleiter/server/kosten.ts (bis 24.09.2026 tutor/server/kosten.ts). Eine abgewiesene Anfrage kostet null; eine, deren Kosten niemand kennt (Zeitgrenze, Antwort ohne usage), behält den Vorbehalt.

TUTOR_BUDGET trägt dafür monat: was dieses Konto im Monat verbraucht hat, in Euro-Cent, und ob der Monatsdeckel erreicht ist. Die Summe der Instanz und den Deckel selbst sieht nur die Verwaltung (Feature.ADMIN); für alle anderen stehen beide auf null. Je Anlass kommt grenzeEingabeZeichen dazu.

Seit KI04 hat jedes Konto dazu ein Monatskontingent nach seiner Abo-Stufe (admin.abo_kontingente, Wanderung 128; ab Werk frei 0,50 €, premium 4 €, admin 10 €, dev nur der Deckel der Instanz). Die beiden Übungsanlässe behalten ihre festen Tagesdeckel, ihr Geld zählt aber gegen dieses Kontingent — geprüft unter derselben Sperre, nach dem Deckel der Instanz; ist es erreicht, kommt die Regelfassung mit kontingent_erreicht. monat nennt dafür kontingentEurocent, restEurocent und kontingentErreicht, und kontingent die Stufe mit dem, was sie darf. Beim Kontowechsel gelten Stufe und Verbrauch des übernommenen Kontos.

Die Sprache der Antwort (I09, 08.10.2026). Die Anweisungen für die Bewertung, den Hinweis und die neue Aufgabe (tutor/server/modellhilfe.ts) und für das Aufgabenpaar nach einer Bewertung (tutor/server/eingreifen.ts) sind deutsch geschrieben, weil sie an das Modell gehen. Die Begründung, der Hinweis und die Aufgabenstellung stehen in der Oberflächensprache des Kontos (kontosprache, N377): aufSprache setzt „auf Deutsch“ oder „auf Englisch“ ein, aus @shared, damit Tutor und Begleiter einander nicht kennen müssen (Grundsatz 43). Die festen Kennungen im JSON — Kriterien, Fehlerklassen, Aufgabenarten — bleiben, wie der Server sie liest. Für ein deutsches Konto ist die Anweisung Zeichen für Zeichen die von vorher.

„Erreicht“ heißt: nicht einmal der kleinste Aufruf passt noch. Die Lage eines Anlasses (bereit, grund) misst Deckel und Kontingent am kleinsten Vorbehalt, den ein Aufruf dieses Anlasses haben kann — feste Anweisung, leere Frage, Rahmung, Antwortgrenze —, mit derselben Rechnung wie das Vormerken. monat.deckelErreicht und monat.kontingentErreicht sagen dasselbe für den kleinsten Aufruf über alle Anlässe. Bis zur Prüfung von KI04 hieß es „Verbrauch hat den Betrag getroffen“, und bei 49 von 50 Cent stand die Stufe frei bis zum Monatsende auf „bereit“, während jede Frage am Vorbehalt scheiterte. Eine lange Frage kann an einem Rest trotzdem scheitern; dann nennt der Aufruf den Grund. restEurocent ist ohne Vorbehalt gerechnet — ein Rest über null heißt nicht, dass noch ein Aufruf hineinpasst.

Aufgehoben wird unter tutor.aufgaben (G03, 21.09.2026, Rahmen 7). Die Aspekte nicht, und die Sitzung nicht — beide gehören zu einem Thema, nicht zum Schirm. Unter einem Schlüssel zeigte der Rückfall beim nächsten Ausfall die Aspekte des vorigen Themas unter dem Namen des jetzigen; das wäre schlechter als gar keine Anzeige.

Als Baustein im Wiki (WI-261008-bausteine-artikel)

Stumm und mit festen Beispieldaten; Form und Wortlaut stehen in wiki.md unter „Bausteine im Artikel“. Zwei Bausteine: das Band der Entwürfe mit „Freigeben“ und „Verwerfen“ (tutor.draft-banner, Block) und der Knopf „Freigeben“ (tutor.release-button, im Satz).

Was fehlt

Hinweis: Drei Punkte dieser Liste waren am Morgen des 21.09.2026 noch offen und am Abend gebaut — 4, 8 und 14 —, ohne dass die Liste es erfuhr. Sie standen hier als Lücke, während der Code sie längst geschlossen hatte. Das ist die Richtung, in der diese Datei am leichtesten falsch wird: Eine Seitenbeschreibung, die zu viel vermisst, schickt die nächste Nacht auf eine Arbeit, die schon getan ist.
Am 22.09.2026 kamen 8 (zweite Hälfte), 20 und 25 dazu. Und es zeigt sich dabei ein Muster: Was hier als geschlossen dasteht, ist fast nie ganz zu. Deshalb steht unter jedem durchgestrichenen Punkt, was daran noch fehlt — ein Haken ohne Rest wäre die zweite Art, wie diese Liste falsch wird.
Am Abend desselben Tages fielen die Reste von 14, 20, 25 und mit ihnen 26 ganz. Was dabei neu auffiel, steht als 28, 29 und 30 darunter: Jeder geschlossene Punkt hat mindestens einen neuen geöffnet, und das ist kein Mangel dieser Liste, sondern ihr Zweck.

  1. Die LLM-Stufe ist nicht angeschlossen — sie ist es, seit dem 21.09.2026 (NB09 Stufe 1). Die Schnittstelle steht (begleiter/server/modell.ts, bis 24.09.2026 tutor/server/modell.ts, Grundsatz 39), zwei Anlässe laufen darüber, das Budget zählt und der Ausfall ist vorgesehen. Was fehlt, ist der Schlüssel — C08 ist seit dem 27.09.2026 erledigt, der Schlüssel liegt auf dem Server. Aufgaben erzeugen ist noch kein Anlass — seit dem 30.09.2026 ist es einer (KI31, N421): „Aufgabe vorschlagen“ im Anlegefach, drei Anlässe also; mit der Abschrift (Punkt 2) seit demselben Tag vier. Ob ein Modell brauchbar bewertet, zeigt sich erst an echten Abgaben; geprüft ist der Weg mit einer Modellattrappe und ohne Schlüssel.
  2. Kein Foto → LaTeX — seit dem 30.09.2026 gibt es die Abschrift (Christians Reihenfolge am selben Tag: „2, dann 33 und zuletzt 6“). Eigener Anlass FOTO_ABSCHREIBEN mit eigenem Tagesdeckel (10 ab Werk, je Stufe im Modellschirm einstellbar), Route TUTOR_TRANSCRIBE, MCP tutor_abschrift. Der Begleiter schickt dafür zum ersten Mal ein Bild mit: eines je Ruf, höchstens 3,75 MB, JPEG, PNG, GIF oder WebP; der Vorbehalt rechnet 6000 Token je Bild ein. Der Server liest das Foto selbst aus der Ablage und nur das eigene — ein fremder Beleg endet in derselben 404 wie einer, den es nicht gibt. Das erwartete Ergebnis geht nie mit. Die Abschrift landet erst auf „In die Abgabe übernehmen“ im Feld. Seit dem Rest vom 30.09.2026 auch ein PDF (Christians Wahl: „1. und 2.“): Es geht als Dokument hinaus, vor der Frage. Was es kostet, hängt an Seiten und Text, nicht an der Dateigröße; deshalb zählt pdfUmfang (Poppler, im Gerüst unter backend/src/utils/) beides, bevor der Vorbehalt steht — je Seite 6000 Token wie ein Bild, dazu der Text. Grenzen des Anbieters: 100 Seiten, alle Anhänge eines Rufs zusammen 22,5 MB (die Anfrage bleibt als Base64 unter 32 MB), nichts Verschlüsseltes. Tagesdeckel und Antwortgrenze bleiben die des Anlasses — ein langes PDF braucht womöglich eine höhere Antwortgrenze im Modellschirm. Die Schätzung dort rechnet weiter mit einem Bild je Ruf. Am echten Blatt geprüft (30.09.2026): Zwei gedruckte Vorkurs-Blätter als PDF gingen auf dem Server mit dem echten Schlüssel hinaus, und das Modell nannte ihren Inhalt; weil keins eine Lösung zur Aufgabe trug, kam statt einer Abschrift ein Befund — daraus ist die Marke für „keine Lösung“ geworden. Was fehlt: ob ein Modell Handschrift brauchbar liest. In Denotato liegt noch kein Foto einer handschriftlichen Lösung; das prüft Christian (NB09, „Warum es hier liegt“).
  3. Keine Lösung zum Nachschlagen — seit dem 21.09.2026 gibt es sie zweimal: expected_result steht an jeder Aufgabe und als Spalte „Ergebnis" in der Tabelle, und das Arbeitsblatt druckt es auf Wunsch (Haken „mit Lösungen"). Was fehlt, ist der Lösungsweg: eine Zahl sagt, ob man richtig lag, und nicht, wo man abgebogen ist. Dafür gibt es keine Spalte — und eine neue Spalte ist eine Entscheidung, keine Nachtarbeit (Grundsatz 8).
  4. Ein geholter Hinweis setzt hintUsed nicht — seit dem 21.09.2026 zählt jeder geholte Hinweis, egal ob der Schirm oder der MCP ihn geholt hat und egal, ob beim Bewerten false mitkam: Der Server sieht im Protokoll nach, ob seit der letzten Bewertung ein Hinweis zu dieser Aufgabe geholt wurde, und zieht den Punkt ab. Was fehlt: ein Weg zurück. Ein Hinweis, den man nach zwei Sekunden wegklickt, ohne ihn gelesen zu haben, kostet denselben Punkt wie einer, der die Aufgabe verraten hat.
  5. Kein Arbeitsblatt-Export — es gibt ihn, seit dem 17.09.2026 in beiden Formaten, und seit dem 21.09.2026 wahlweise mit Lösungen. TUTOR_WORKSHEET setzt ein Blatt aus den Aufgaben des Pools zusammen.
  6. Keine Zeitmessung — seit dem 30.09.2026 misst das Bewertungsfeld, vom Öffnen bis zur Bewertung, und study.exercise_attempts.duration_seconds hält es fest (Wanderung 200, NULL = nicht gemessen). Die Messung ist berichtigbar, der Verlauf nennt sie je Versuch, tutor_bewerten nimmt sie wahlweise an. Seit dem Rest vom 30.09.2026 zählt die Uhr nur, solange der Reiter sichtbar ist. Was fehlt: Von der Zeit auf Papier weiß sie nichts, und ein sichtbarer Reiter, an dem niemand sitzt, zählt mit; dafür ist das Feld zum Berichtigen da. Ausgewertet wird die Dauer noch nirgends — seit N436 steht das Tempo im Verlauf einer Aufgabe: der erste und der letzte gemessene Versuch mit Dauer und Punkten. Christian hat das unter drei Entwürfen gewählt; einen Durchschnitt je Thema oder Stufe im Themenstand und einen Vergleich mit der Lernzeit gibt es deshalb nicht.
  7. Keine Wiedervorlage-Erinnerung — seit dem 21.09.2026 steht sie über dem Sitzungsband, mit Zahl, mit der Zahl der überfälligen und mit einem Klick auf den Reiter. Was fehlt: eine Erinnerung, die den Schirm verlässt — seit dem 30.09.2026 meldet die Eule sie (KI32, N421): Liegt eine Wiedervorlage länger als die eingestellte Zahl Tage (Vorgabe 1), steht im Begleiter und im Briefing der Anstoß „Wiedervorlagen liegen“ mit dem Knopf „Zu den Wiedervorlagen“ auf /tutor?v=exercises-review. Abschalten lässt er sich unter begleiter.anstoss.wiedervorlage.
  8. Kein Fortschrittsbild je Aspekt — den Ring gibt es seit dem 21.09.2026, gefüllt mit der besten verbindlichen Bewertung und voll, sobald der Aspekt nachgewiesen ist; und seit dem 22.09.2026 auch fürs Thema: ein großer Ring über dem Satz und vier kleine darunter, einer je Abschlussbedingung (shared/fortschritt.ts); der Nenner kommt seit dem 22.09.2026 aus einer Quelle — aspect_count steht am Themenstand, und der Ring hängt nicht mehr an einer zweiten Abfrage (Punkt 26). Was fehlt: ein Bild über die Zeit. Beide Ringe zeigen den Stand von jetzt; ob er seit letzter Woche gestiegen oder gefallen ist, sagt keiner von beiden — und genau das ist die Frage, die jemand stellt, der zweimal hinsieht. Dafür bräuchte es einen Verlauf, und den gibt es nicht (Punkt 12).
  9. „Freigeben" ist endgültig — seit dem 21.09.2026 nicht mehr (Q05): zehn Minuten lang nimmt die Leiste unten die ganze Freigabe zurück. Was fehlt: dasselbe für „Bewerten" selbst — eine einzelne Bewertung ändert man, indem man sie neu abgibt — und für „Verwerfen", das die Entwürfe wirklich wegwirft; seit dem 23.09.2026 fragt es wenigstens vorher (Q09). Und der Weg über den MCP hat keinen Rückweg.
  10. Die Leiste zählt in Minuten, nicht in Sekunden. „Noch 1 Minute" steht neunundfünfzig Sekunden lang da und meint zuletzt drei. Ehrlich wäre eine Sekundenanzeige in der letzten Minute — sie wäre auch unruhiger, und der Schirm hat Lautstärke 3.
  11. Keine Aufgabe aus einer Karteikarte und umgekehrt (Q02).
  12. Kein Verlauf einer Aufgabe — seit dem 30.09.2026 gibt es ihn im Bewertungsfeld: „Verlauf: N Versuche" klappt alle eigenen, freigegebenen Versuche auf, neueste zuerst, jeder mit Datum, Stand, Punkten, Teilwerten, Marken, Fehlerklassen und seinem eigenen Beleg (TUTOR_ATTEMPTS, zusammen mit Punkt 24). Was fehlt: der Abgabetext der früheren Versuche — der Server schickt ihn absichtlich nicht mit (Q03).
  13. Keine Schwierigkeitsanpassung. Die Stufe steigt nach Regel, nicht nach Leistung.
  14. Fehlerklassen werden erfasst und nie ausgewertet — seit dem 21.09.2026 stehen sie im Themenstand, und seit dem 22.09.2026 steht daneben dieselbe Frage ohne das Thema: ein zweiter Block „Und über alle Themen hinweg:", der nur erscheint, wenn er etwas anderes sagt als der erste (error_counts_all, shared/fehlerbild.ts). Was fehlt: die Frage nach der Zeit. Gezählt wird seit dem ersten Tag, und ob eine Klasse seltener geworden ist, sieht man nicht — ein Balken, der seit Mai gleich hoch steht, und einer, der sich halbiert hat, sehen gleich aus. Dafür müsste die Zählung ein Fenster kennen (etwa „die letzten dreißig Tage"), und das ist ein neues Feld an der Abfrage.
  15. Das Protokoll hat keinen Schirm — die Verwaltung hat ihn seit KI02 (geprüft am 30.09.2026): Admin → Modell zeigt am Ende das Protokoll aller Konten, gefiltert nach Konto, Anlass, Modell, Ausgang, seit KI39 auch Grund, und Zeitraum, nur Kenndaten (B22); MCP begleiter_protokoll. Was fehlt: Das eigene Konto sieht seine Aufrufe nicht — nur den Tageszähler je Anlass und den Export. Ein Modell, dessen Aufrufe man nicht selbst nachlesen kann, ist eines, dem man nur halb traut.
  16. Der Tagesdeckel ist eine Zahl im Code, keine Einstellung — seit dem 30.09.2026 stellt die Verwaltung ihn je Abo-Stufe ein (KI33, N421, Wanderung 196): unter Admin → Modell, je Tutor-Anlass Tagesdeckel und Antwortlänge; 40, 60 und 20 am Tag sind nur noch die Werkswerte. Seit dem 03.10.2026 auch die Grenze der Frage (KI44, N501): je Stufe und Anlass im Feld „Zeichen Frage“, ohne Eintrag die Zahl des Registers, höchstens ihr Vierfaches; der Server prüft die Frage gegen die Grenze der Stufe des Kontos.
  17. Der Deckel zählt Aufrufe, nicht Kosten — seit dem 24.09.2026 zählt er beides (A34): jede Zeile trägt ihre Kosten, die Instanz hat einen Monatsdeckel in Euro, und TUTOR_BUDGET nennt den eigenen Monatsverbrauch. Was fehlt: Der Schirm zeigt ihn nicht — die Antwort trägt monat, die Ecken lesen es nicht. Der Kurs veraltet still, weil ihn niemand abfragt. Eine Zeile, deren Prozess zwischen Vormerken und Abschließen stirbt, bleibt pending und zählt mit dem Vorbehalt bis zum Monatsende weiter; aufgeräumt wird sie nicht. Im Protokoll steht für Tages-, Monats- und Längengrenze derselbe Ausgang capped — seit dem 04.10.2026 sagt die Spalte „Grund“, welche Sperre es war (KI39, N501, Wanderung 227): Monatsdeckel der Instanz, Monatsbetrag der Stufe, Tagesdeckel, zu lange Frage, Bilder, PDFs oder zu langer Kontext, als feste Kennung; der Ausgang bleibt capped und zählt wie bisher. Admin → Modell zählt die Gründe unter dem Filter des Protokolls und filtert nach ihnen.
  18. Kein zweiter Anbieter erprobt. Die Schnittstelle ist dafür gebaut (Modellanbieter), aber es gibt genau eine Umsetzung. Ob sie trägt, zeigt erst die zweite — und bis dahin ist die Anbieterunabhängigkeit eine Absicht und kein Nachweis.
  19. Kein PDF. LaTeX herunterladen heißt, TeX auf dem Rechner zu haben. Wer keins hat, bekommt eine Datei, die er nicht öffnet; Markdown ist der Umweg und kein Ersatz für ein Blatt, das man ausdruckt.
  20. Der Zeitstempel ist nicht sichtbar, bevor man lädt — seit dem 22.09.2026 steht er neben den beiden Format-Knöpfen: „Kopfzeile: 22.09.2026", gerechnet mit useZeit() und damit in der eingestellten Zone. Und seit dem 22.09.2026 sagt der Schirm es, wenn er sich geirrt hat: Nach dem Laden werden Vorschau und Blattdatum verglichen, und weichen sie ab, steht darunter eine Zeile, die beide Tage nennt (datumsabweichung in shared/blatt.ts). Der Fall ist selten — genau eine Mitternacht zwischen zwei Uhren —, aber es ist der, für den die Zeile gebaut wurde. Was fehlt: Die Zeile erklärt den Unterschied nicht, sie stellt ihn fest. Warum die beiden Uhren auseinandergehen — Zeitzone, verstellte Gerätezeit, eine Minute über Mitternacht — weiß der Schirm nicht, und er könnte es nur raten.
  21. Die Aspekte und die Sitzung fallen nicht zurück — mit Absicht, weil sie zu einem Thema gehören und nicht zum Schirm. Richtig wäre ein Schlüssel je Thema; dann bliebe auch das stehen. Heute sieht man bei einem Ausfall den Aufgabenpool und darunter nichts (G03).
  22. Die Ablage schneidet zu große Dateien ab und meldet Erfolg. Gemessen am laufenden Dienst (V05, 21.09.2026): eine Datei über der Schranke (FILE_MAX_BYTES, 50 MiB als Vorgabe) kam als file_uploaded zurück, um genau die Überschreitung gekürzt. Multipart beendet den Strom an der Grenze, statt ihn abzubrechen, also erreicht der Zähler in plugins/files/server/ablage.ts die Bedingung bytes > MAX_FILE_BYTES nie, und upload.file.truncated liest niemand. Der Tutor wehrt sich seitdem selbst — er vergleicht die Byte-Zahlen —, aber die Ablage tut es nicht, und jeder andere Hochladeweg hat denselben Fehler. Der Weg durch den Umschlag (/files/create, BE24) ist davon nicht betroffen: der prüft die Länge, bevor er schreibt.
  23. Die Ablage nimmt jeden Dateityp. Auch gemessen: eine .exe ging durch. accept="image/*,application/pdf" am Dateifeld ist ein Vorschlag an den Dateiwähler und keine Prüfung. Der Tutor lässt seitdem nur Foto und PDF los — der Endpunkt nimmt weiter alles, und was über ihn hereinkommt, zählt gegen dasselbe Speicherbudget.
  24. Der Beleg hängt am letzten Versuch, nicht am Versuch — seit dem 30.09.2026 ist jeder Beleg erreichbar. Gespeichert war er schon immer am Versuch (exercise_attempts.submission_file_id); nur die Liste trug allein den des jüngsten. Der Verlauf (Punkt 12) zeigt je Versuch „Beleg ansehen" — oder, wenn die Datei gelöscht ist, dass sie nicht mehr da ist.
  25. Das Lösungsblatt zählt Aufgaben ohne Ergebnis mit — seit dem 22.09.2026 beantwortet eine Funktion die Frage für beide Formate (loesungen in @shared/handlers/tutor/worksheet): aufgeführt wird, wozu es ein Ergebnis gibt, unter der Nummer, die die Aufgabe auf dem Blatt trägt; darunter steht, zu wie vielen nichts hinterlegt ist; ohne ein einziges Ergebnis entfällt der Abschnitt. Vorher listete toLatex alle Aufgaben mit einem Gedankenstrich bei den leeren, und toMarkdown setzte den Abschnitt auch ganz ohne Ergebnis — und weil beide durchnummerierten, stand die Antwort zu Aufgabe 5 unter der 3, sobald eine Aufgabe übersprungen wurde. Und seit dem 22.09.2026 gibt es das Blatt ohne die Lücke: der Haken „nur Aufgaben mit Ergebnis" filtert in der Abfrage (onlyWithResult), der Satz darunter entfällt dann von selbst, und der Dateiname sagt, welches der beiden Blätter man in der Hand hat. Der Filter wirkt auf das Blatt, nicht auf die Ansicht — seit dem 30.09.2026 steht die Zahl vor dem Klick da: Die Zeile neben den Knöpfen nennt, wie viele Aufgaben auf dem Blatt landen, und zählt „nur Aufgaben mit Ergebnis" schon mit (Punkt 29). Die Tabelle selbst engt der Haken weiterhin nicht ein.
  26. Der Ring fürs Thema hängt an einer zweiten Abfrage — seit dem 22.09.2026 nicht mehr: TUTOR_TOPIC_STATUS nennt aspect_count selbst, und der Ring „Aspekte auf Stufe 2" braucht TUTOR_ASPECTS nicht mehr, um seinen Nenner zu kennen. Was fehlt: der Rückfall. Fällt der Themenstand selbst aus, ist der Ring weg — aufgehoben wird nur tutor.aufgaben, und ein Schlüssel je Thema geht heute nicht (Punkt 21). Der Nenner steht damit aus einer Quelle, aber aus einer, die auch ausfallen kann.
  27. escapeLatex ließ < und > durch — seit dem 22.09.2026 nicht mehr. Gefunden beim Aufräumen von Punkt 25: Die beiden zerlegen nichts, sondern werden in der Textschrift stillschweigend zu ¡ und ¿. Aus „für alle n > N" wurde „für alle n ¿ N", das Blatt übersetzte ohne eine Warnung, und gemerkt hätte man es beim Üben an sich selbst. Was fehlt: dieselbe Frage für alles andere, was durchgeht statt abzubrechen. escapeLatex kennt neun Zeichen; ob das alle sind, hat nie jemand gegen eine Liste geprüft — und der Nachweis kann nur das prüfen, woran jemand gedacht hat.
  28. Zwei Zeichen gehen weiter still durch: " und | — behoben seit dem 22.09.2026 (geprüft am 30.09.2026): escapeLatex setzt \textquotedbl{} und \textbar{}, und verify:tutor prüft beide, auch neben Mathematik. Der alte Befund: Gefunden am 22.09.2026 beim Nachlesen der Präambel, nicht gemessen — auf diesem Rechner liegt kein TeX. Das Blatt lädt babel mit ngerman, und dort ist " ein aktives Zeichen: "a wird zu ä, "` zu einem deutschen Anführungszeichen. Aus die "Aussage" ist wahr wird damit etwas anderes, ohne dass etwas abbricht. Und weil keine fontenc-Zeile dasteht, gilt die alte Schrift OT1 — dort druckt | einen Gedankenstrich. Beides ist derselbe Fehler wie bei < und > (Punkt 27): ein Zeichen wird ausgetauscht statt gemeldet. Die Behebung ist eine Zeile in escapeLatex und eine in verify:tutor, aber beide liegen in @shared und damit außerhalb dieses Bereichs.
  29. Der Filter am Lösungsblatt kennt nur „hat ein Ergebnis" — seit dem 30.09.2026 folgt das Blatt der Tabelle. Über ihr steht eine Filterleiste (Stand, Stufe, Thema, je mit Zahl), und das Blatt bekommt genau die Kennungen der sichtbaren Zeilen — im Rahmen des Sitzungsthemas, solange niemand selbst ein Thema wählt. Bleibt keine Aufgabe übrig, fragt der Schirm den Server gar nicht erst. TUTOR_WORKSHEET und tutor_arbeitsblatt kennen dazu den Filter nach dem Stand (ohne verbindlichen Versuch: gestellt), und eine leere Liste von Kennungen ergibt ein leeres Blatt statt aller Aufgaben. Was fehlt: ein Zeitraum („die aus den letzten vier Wochen").
  30. Das Fehlerbild zählt Versuche, nicht Aufgaben — seit dem 30.09.2026 wahlweise beides. Der Themenstand nennt je Klasse auch, an wie vielen verschiedenen Aufgaben sie auftrat (exercises); die Wahl „je Versuch | je Aufgabe" über dem Fehlerbild stellt Zahl, Reihenfolge und Überschrift um, und die Überschrift sagt immer, welche Frage gerade beantwortet wird. Die Wahl erscheint nur, wenn sie etwas ändert.
  31. Die Stufe (Basis/Beweis/Transfer) hat kein eigenes Zeichen (N134, 23.09.2026). — mit Absicht so, geklärt am 30.09.2026 (E12): Eine „Stufenleiter" wurde nicht gezeichnet. Drei Stufen sind ein Rang, kein Ding, und ein Zeichen, das in jeder Zeile gleich davorsteht, sagt nichts — unterscheiden müsste es die Stufe selbst, und dafür ist Rang da, sobald sein aria-label nicht mehr fest „Priorität" sagt (Punkt 32). Der alte Befund: Die Registry kannte keinen freien Namen für drei Verlaufsstufen; kristall ist durch Interessen und Skills belegt (Festlegung C).
  32. Rang und Punkte sind an ihr eigenes Feld gebunden, nicht wiederverwendbar (N134, 23.09.2026). Beide Bausteine (components/formen/Rang.tsx, Punkte.tsx) tragen ein aria-label, das fest „Priorität …" bzw. „Aufwand …" sagt, und beide kennen genau drei Wörter. Ein Feld wie Schwierigkeit (vier Stufen) oder Stufe (andere Bedeutung) kann sie deshalb nicht einfach übernehmen, ohne Screenreadern etwas Falsches vorzulesen. Ein wort- oder aria-label-Parameter an beiden Bausteinen würde sie für andere Bereiche öffnen — das ist eine Änderung an gemeinsamem Code, keine Nachtarbeit in einem Bereich (Grundsatz 8).
  33. Die Antwortgrenze ist dieselbe Zahl wie die Textgrenze — seit dem 30.09.2026 nicht mehr. Jeder feste Anlass trägt einen eigenen Raum der Antwort in Token (antwortTokens, ab Werk etwa doppelt so viel wie sein Text), und jede Abo-Stufe kann ihn im Modellschirm neben Deckel und Zeichen abweichend setzen (Feld „Token Antwort“; leer = ab Werk). max_tokens ist dieser Raum plus der Denkraum des Aufwands; der Text wird weiter auf die Zeichengrenze geschnitten, der Hinweis jetzt auf die der Stufe statt fest auf 600. Die Schätzung rechnet mit dem Raum. Auch die Tabelle des Denkraums je Aufwand steht seit dem 30.09.2026 nicht mehr im Code, sondern im Modellschirm, Karte „Denkraum“, mit Vorschau je Stufe (N370, Wanderung 201). Der alte Befund, zur Geschichte: max_tokens war grenzeZeichen (1200 für den Vorschlag, 600 für den Hinweis), und darin zählte das Nachdenken des Modells mit. Braucht es die Grenze fürs Nachdenken auf, kommt kein Text — seit A34 steht das ehrlich als unreadable mit seinen Kosten im Protokoll, aber der Aufruf ist verloren. Gedämpft wird das Nachdenken seit A39 mit Aufwand low; erst ein höherer Aufwand bekommt eigenen Denkraum obendrauf (denkraumTokens, KI06). Echte Daten vom 30.09.2026 aus dem Protokoll: zwei Bewertungsvorschläge auf claude-opus-5 mit low kamen als answered zurück, mit 394 und 150 Token Antwort bei 1200 Grenze. Einen echten Hinweis (600) gab es noch nie — ob die kleinere Grenze reicht, belegt erst der erste (A39). Seit dem 04.10.2026 (KI39) endet eine zu knappe Antwort nicht mehr still: Hält das Modell an max_tokens oder am Kontextfenster an, oder ist der Text länger als die Zeichengrenze, trägt das Ergebnis gekuerzt, Hinweis und Abschrift sagen es am Schirm (siehe oben), und die Protokollzeile nennt den Haltgrund (max_tokens, model_context_window_exceeded, over_limit). Die Anweisung des Hinweises nennt die Zeichengrenze der Stufe, damit das Modell kürzer schreibt, statt abgeschnitten zu werden. Der Vorab-Agent, der mit Aufwand low und ab Werk ohne Denkraum ruft, bekommt auf einem Modell mit Aufwand mindestens 1024 Token (VORAB_MINDESTRAUM_TOKEN, fest nach Grundsatz 72, weil ein kurzer Denkblock die bisherigen 40 Token aufbrauchen konnte und die Wahl dann unlesbar und trotzdem bezahlt war); die Schätzung des Vorbehalts rechnet mit demselben Raum.
  34. Übungsaufgaben aus einem geteilten Modul tragen kein Fremd-Zeichen — sie tragen es (geprüft am 30.09.2026): Die Aufgabenliste läuft inzwischen über die DataTable, und die zeigt die Fremdmarke in der ersten Spalte, sobald eine Zeile foreign_owner trägt. Der alte Befund (NB10, 27.09.2026): TUTOR_EXERCISES liefert je Aufgabe foreign_owner — null für eigene, sonst den Namen des Eigentümers —, und der Typ in client/anfragen.ts kennt das Feld. Der Schirm zeigt es aber nirgends: Die Aufgabenliste des Tutors ist keine DataTable, an der das Zeichen von selbst erschiene. Wer eine fremde Aufgabe bearbeitet, sieht erst im Briefkasten (/geteilt), dass sie geteilt ist. Nachzuziehen ist die Fremdmarke hinter dem Aufgabentitel, wie in der Modultabelle.