Vom Nichts zum Stundenplan — das Urbild
Ein belastbarer Bauplan für den Weg zur fertigen manuellen Wochenstundentafel — nach drei Review-Runden. Klasse×Fach bleibt der Rahmen (D2 und die Bilanz rechnen je Gruppe); die weitergehenden Vorschläge sind auf vorhandene Prilog-Bausteine gemappt, nicht als neue Objekte gebaut.
Rev. 4 — dritte Review eingebaut
Neu: Tor rechnet im Szenario (Bibliothek eingefroren) mit 4 Rechnungen (Slot-Kapazität zurück) · Freigabe → beschlossen (Konferenz) vor dem Commit · Tageslage als Kurve · Regelwerk mit Schweregrad · drei Einstiege. Gemappt: Fachqualifikation (TeacherQualification), Dienst-Slots (ManualSubject.kind), Perioden (Epoche verallgemeinert), Hybrid (source+locked). Gelöst: Szenario-Grundlage = einfrieren; Teilung über „je Gruppe".
Kernbefund
„Fertig" heißt konfliktfrei UND vollständig (jedes Kontingent je Gruppe erfüllt), geplant wird im Szenario (nie in der Produktion), und ein Stundenplan wird nicht committet, sondern beschlossen.
1 · Das Urbild
Vier Ebenen, zwei Nebenspuren (Räume typgebunden · Deputat/Verfügbarkeit hart). Das Tor liegt im Szenario: die Arbeitskopie friert die Bibliothek ein, das Tor rechnet darin vier Prüfungen; vor dem Commit steht die Freigabe.

Das Tor rechnet vier Dinge — die Zeitkapazität je Klasse (Σ Kontingent ≤ Slots) ist die einzige, die heute schon baubar ist. Die Freigabe ist neu: ein Stundenplan wird an einer Waldorfschule beschlossen, nicht committet — das Konferenz-Modul dafür ist bereits gebaut.
2 · Konstanten & Variablen
Ebene A ist fast reine Bibliothek (mehrjährig), B/C sind die Variablen des Jahres. Eine zweite Achse trennt Muss (geprüft) von Soll (gewichtet).

Muss ohne Prüfung ist kein Muss. Jede Konstante im Muss-Feld braucht einen Check — Kontingent (D2), Doppelbelegung (D1), Deputat/Verfügbarkeit (Tor + D1). Das weiche „nicht Mo, 1. Stunde" braucht ein eigenes Feld in der Verfügbarkeit — heute noch ein Blocker.
3 · Die Bibliothek der Schul-Konstanten
Jede Muss-Konstante nennt ihren Prüf-Ort.
| Konstante | Was sie festhält | Prüfung / Verbraucher | In Prilog |
|---|---|---|---|
| Fächer-Katalog | Name, Farbe, Kategorie | — | vorhanden |
| Fach-Profil | Gewichte je Achse (slot-lokal + global) | Ampel + Solver | neu · der Kern |
| Stundentafel / Kontingent | Wochenstunden je Fach & Jahrgang | D2 (je Gruppe) | vorhanden |
| Deputat | Wochendeputat je Lehrkraft (Fachfaktoren) | Tor + Deputat-Cockpit | hart · P2 |
| Lehrer-Verfügbarkeit | Teilzeit, freie Tage, Sperrzeiten | Tor + D1 | Feld fehlt |
| Fachqualifikation | Person × Fach × Stufe | Bilanz + E1 + Vertretung | TeacherQualification |
| Zeitraster | Lektionen, Pausen, Klingelzeiten | Tor (Zeitkapazität je Klasse) | vorhanden |
| Räume | Typ + Anzahl je Typ (Euryth. ×4 …) | Tor (Auslastung) + D1 (Parallelität) | teils |
| Rahmenregeln | Kernzeit, Mittagspause, max. Std/Tag | Regelwerk (Fehler/Warnung) | teils |
4 · Das Gewichtsmodell
Das Fach-Profil trägt zwei Sorten Zahl in zwei Ebenen (Fach-Profil = Konstante; Szenario-WeightProfile = jahresweise Übersteuerung, Solver liest die zusammengeführte Ebene).

- Slot-lokale Achsen sind Eigenschaften einer Zelle → die Ampel färbt. Als Kurve statt überlappender Flags:
[+90, +90, +40, 0, −40, −80, −80, −80]. So löst sich das alte Problem, dass die 1. Stunde „früh und Randstunde" war und sich +90−50=+40 selbst falsch rechnete. - Globale Achsen hängen von der ganzen Belegung ab → keine Zellfarbe, sondern eigene Anzeige.
Drei Entscheidungen für 04: (1) Zwei-Ebenen-Architektur; (2) Normierung je Fach für den Solver (sonst kapert das achsenreichste Fach die Zielfunktion); (3) Achsen-Disjunktheit — überlappende Prädikate werden zur Kurve.


Die Sozial-Vektoren bleiben ausgegliedert (Datenschutz + Mitarbeitervertretung). Ihr datenschutzfreier Ersatz sind die strukturellen Lehrerplan-Warnungen aus dem Regelwerk (§6): Hohlstunden, Gebäudewechsel, Präsenztage — sie beschreiben den Plan, nicht die Person.
5 · Fachbereiche & Eskalation bei Kapazitätslücken
Die Lücke „wir können Stunden nicht besetzen, weil das Lehrer-Kontingent fehlt" wird erst beim Platzieren sichtbar — zu spät. Die Lösung liegt vorne, im Fachbereich.

Der Fachbereich hat eine Kapazitäts-Bilanz (Σ Kontingent gegen Σ verfügbares Deputat, abzüglich Verfügbarkeit). Wer dazu zählt, folgt aus Fachqualifikation + Fach-Kategorie — eine Ableitung, keine Pflegeliste. Die Eskalations-Leiter ist zeitgetrieben:
- E0 Früherkennung (Bilanz, alle Optionen offen) · E1 intern umverteilen · E2 Soll ummodellieren (Musik anders takten) · E3 rekrutieren (langer Vorlauf → früh) · E4 Lücke akzeptieren → Tor-Ausnahme (gelb, Beschlussbezug ins Konferenz-Register; sonst blockiert E4 das eigene Tor).
Termin & Besitzer: ein Stichtag („grün bis 31.01.", TTL-analog) und ein Besitzer aus dem freien Funktionsrollen-Modell (keine erzwungene Fachbereichsleitung); unbesetzt fällt die Bilanz sichtbar an die Stundenplanverantwortung.
6 · Die Schritte im Detail
Ebene A — Fundament & Bibliothek
A1 Konten · A2 Klassen · A3 Schüler · A4 Zeitraster · A5 Fächer inkl. Profil + Kategorie · A6 Dienst-Slots (ManualSubject.kind += dienst: Aufsicht/Konferenz/Betreuung/Mentorat — belegen die Person, zählen ins Deputat, erscheinen in D1).
Nebenspur R — Räume (typgebunden)
Normalräume flexibel; Funktionsräume knapp (4 Eurythmiesäle …). Auflösung Slot→Fach→Stamm. Zwei Prüfungen: Tor = grobe Auslastung, D1 = exakte Parallelität. Bei Teilungen ist der Raum Pflicht.
Nebenspur H — Menschen
H1 Deputat · H2 Verfügbarkeit (Feld fehlt) · H3 Fachqualifikation (TeacherQualification existiert → Bilanz + E1 + Vertretung).
Ebene B — Struktur & Zuordnung
B1 Lehrer×Klassen · B2 Teilungen (zwei Lehrkräfte) · B3 Fächer je Klasse inkl. Kontingent.
◇ Bereitschafts-Tor — rechnet im Szenario
Die Arbeitskopie friert die Bibliothek ein (libraryRevisionId); das Tor rechnet vier Dinge: 1 Zeitkapazität je Klasse (heute baubar), 2 Deputat-Überbuchung (Lehrer-Last), 3 Räume-Auslastungsschranke, 4 Fachbereich-Bilanz grün/Ausnahme. Nicht dasselbe wie D1 (Parallelität entsteht erst in C).
Ebene C — Platzierung (im Szenario)
C1 Stunden setzen. Entschieden: die Bibliothek ist beim Öffnen eingefroren; der Commit rechnet ein letztes Mal gegen den aktuellen Stand. Hybrid: der Solver füllt C1 vor (source='solver'), respektiert locked-Slots (HU/Epochen von Hand). C2 Perioden (SchedulePeriod: Epoche/Praktikum/Fahrt/Probenwoche mit verdraengt + zaehltAufKontingent).
Ebene D — Prüfen
D1 Konflikt (Doppelbelegung + Raumtyp-Parallelität + Teilnehmerkreis-Überschneidung auf Klassenanteilen, v1 nicht schülergenau + Epochen-Vorrang + Dienste). D2 Vollständigkeit — exakte Gleichheit, bidirektional, je Gruppe; Klassen-Soll ≠ Lehrer-Last; Bezugszeitraum zweistufig (Regelwoche hart, Jahresbilanz weich). D3 Korrigieren + verwaiste Overrides (Warnliste).
Regelwerk mit Schweregrad: Fehler blockieren den Commit; Warnungen (Schüler- und Lehrerplan-Struktur) werden quittiert.
✓ Freigabe → beschlossen → Commit
entwurf → in Freigabe → beschlossen → live. In Freigabe sieht jede Lehrkraft ihren eigenen Plan; der Commit trägt einen Beschlussbezug (Konferenz), wählt ein Wirksamkeitsdatum und rechnet das Tor ein letztes Mal.
7 · Drei Einstiege & Reihenfolge
- 1 Erstmigration (Neukunde): Import (PSF/Stammdaten-IO) mit Dry-Run → Tor → prüfen → Commit.
- 2 Jahreswechsel (Normalfall): Vorjahres-Szenario klonen → Deltas → Tor neu → Commit.
- 3 Vom Nichts (Sonderfall): die vollständige Reihenfolge.
Reihenfolge (topologisch): 1 Lehrkräfte · 2 Klassen+Schüler · 3 Zeitraster/Fächer+Profil/Räume+Typen · 4 Deputat & Verfügbarkeit · 5 Lehrer×Klassen+Teilungen · 6 Fächer inkl. Kontingent · 7 Arbeitskopie öffnen + Bibliothek einfrieren · 8 Tor rechnen (im Szenario) · 9 Stunden setzen (+Perioden) · 10 D1 · 11 D2 · 12 D3 · 13 Freigabe → beschlossen · 14 Commit. Durchgehend, keine Station: die Fachbereich-Bilanz (E0, grün bis Stichtag).
8 · Offene Punkte & Entscheidungen
Fünf Blocker (vor dem Bau): D2-Check (verankert, zu bauen) · Entwurfsmodus/Commit (verankert) · Bezugszeitraum des Mengenmodells (trifft D2 + Deputat + Bilanz) · Verfügbarkeits-Datenfeld · Raumtyp-Bestand.
Gelöst/entschieden: Szenario-Grundlage = einfrieren · Teilung über „je Gruppe" (kein Lerngruppe-Objekt nötig) · Besitzer über Funktionsrollen · Regelwerk mit Schweregrad · Fach-Profil/Szenario-Schichtung · Normierung · Achsen-Disjunktheit.
Bewusst nicht: schülergenaue Konfliktprüfung · exakte Jahresbilanz als Blocker · automatische Kopplungsbildung · Deputat-Feinrechnung mit Anrechnungsstunden · Sozial-Vektoren (bleiben ausgegliedert).
9 · Anhang — Klickpfade
Kurzlebig, veraltet mit dem UI. A1 Kontakte→Aktivieren · A4 Stundenplaner→Stammdaten→Zeitraster · A5 Stammdaten→Fächer · B1 Einstellungen→Klassenbetreuer · B2 Klassenbetreuung→Teilungen/HKU-Planer · C1 Wochenplan (im Szenario) · C2 Epochenplaner/HKU-Planer · D1 Stundenplan→Mitarbeiter-Ebene.
Rev. 4 des Urbilds — Leitbild für den manuellen Stundenplan in Prilog, nach drei Review-Runden. Klasse×Fach bleibt der Rahmen; Part-2-Vorschläge sind auf vorhandene Prilog-Bausteine gemappt. Fünf Punkte sind vor dem Bau blockierend.