ADR-0013: Im Turnier ist die Tischseite Teil der Paarung¶
- Status: accepted
- Datum: 2026-09-03
- Betrifft: Turniere, Datenmodell, Regeln
- Bezug: legt fest, was
Home/Awayim Turnier zusätzlich bedeuten; schreibt0011-finale-und-rueckspieleinsofern fort, als die Auslosung dort schon die Orientierung durchwechselt. Ersetzt kein ADR, und ist eine benannte Ausnahme zur Hausregel „Der erste Aufschlag wird ausgespielt".
Kontext¶
Am Turnierabend passiert zwischen zwei Paarungen jedes Mal dasselbe: zwei Leute stehen an der Platte und klären, wer wohin geht und wer anfängt. Beim zweiten Mal ist es Routine, beim zwanzigsten kostet es den Abend.
Die Hausregel dafür ist bewusst rituell: der erste Aufschlag wird ausgespielt. Für ein Spiel zwischen zwei Leuten in der Pause ist das genau richtig. Bei achtundzwanzig Paarungen an einem Nachmittag ist es achtundzwanzig Mal Ball einwerfen, bevor gespielt wird.
Was im Datenmodell schon existiert, ist eine Orientierung. Home und Away
stehen auf jeder Paarung, und die Auslosung wechselt sie absichtlich durch,
damit nicht immer derselbe zuerst genannt wird. Der Kommentar im Domain-Paket
sagte dazu bisher ausdrücklich:
Home and Away are an orientation, not a venue.
Genau dieser Satz ist die Entscheidung, die hier fällt — und er wird zurückgenommen.
Entscheidung¶
Im Turnier ist Home die eine Tischseite und Away die andere. Der
erstgenannte Spieler beginnt auf Seite A und hat den ersten Aufschlag.
Dazu:
- Die Seiten tragen Namen, pro Turnier, Vorgabe
AundB. Die Platte steht nicht immer im selben Raum, also kann kein fester Name stimmen. Wer „Fenster" und „Tür" einträgt, bekommt einen Spielplan, den man ohne Schild an der Wand lesen kann; wer nichts einträgt, bekommtAundB, was immerhin sagt, dass die beiden Enden auseinanderzuhalten sind. - Zugewiesen, nicht gewürfelt. Die Zuordnung ist die Auslosung: Seite A
ist, wer in der Paarung zuerst steht. Damit ist sie über Reloads, Geräte
und Ausdrucke hinweg dieselbe — was ein
rand()pro Seitenaufruf nicht wäre. Wer „egal, meinetwegen zufällig" sagt, meint genau das: einmal entschieden und dann fest. - Kein Speichern der Zuordnung. Nur die beiden Namen sind neu in der
Datenbank. Wer wo beginnt, ist eine Funktion der gespeicherten
Spielerreihenfolge — dieselbe Eigenschaft, die
0011für das Finale und den Spielplan durchgesetzt hat: berechenbar statt kopiert, damit es nicht auseinanderlaufen kann. - Die Regelseite nennt die Ausnahme. Ohne sie widersprechen sich Aushang und Spielplan, und der Aushang hängt an der Wand, wo niemand einen Kommentar im Code liest.
Warum nicht anders¶
Nur die Seite vorgeben, den Aufschlag weiter ausspielen. War der erste Entwurf und ist der halbe Nutzen: das Einwerfen ist der Teil, der die Zeit kostet, nicht das Seitenfinden. Wer es trotzdem ausspielen will, spielt es aus — auf einem Zettel steht keine Polizei.
Zufällig pro Paarung, gespeichert. Eine Spalte mehr und eine Migration
mehr, für ein Ergebnis, das von der Auslosung nicht zu unterscheiden ist. Die
Auslosung ist schon zufällig: handleCreateTournament mischt das Feld, bevor
es gespeichert wird.
Zufällig pro Paarung, nicht gespeichert. Der Fehler, den die Schlägerfarbe schon einmal verhindert hat: eine Seite, die bei jedem Reload eine andere ist, liest sich als Fehler und nicht als Zufall.
Seitennamen global konfigurieren. Wäre eine Umgebungsvariable und widerspräche dem Fall, der die Frage aufgeworfen hat: die Platte steht nicht immer im selben Raum. Pro Turnier ist die kleinste Einheit, in der die Antwort stabil ist.
Beide Namen erzwingen. Ein Turnier ohne Seitennamen anzulegen muss möglich bleiben, sonst kostet ein Feature, das Zeit sparen soll, beim Anlegen Zeit. Leer heißt Vorgabe.
Konsequenzen¶
- Migration
20260903160000_tournament_sides.sql: zwei Textspalten mit Vorgabe, vorwärtsgerichtet und additiv. Jedes bestehende Turnier bekommtA/B, also die Aussage, die es vorher implizit hatte: die Enden sind unterschieden, sie haben nur keinen Namen. - Der Kommentar an
domain.Matchwird korrigiert. Er sagte,Homesei kein Ort; im Turnier ist er jetzt einer. Außerhalb eines Turniers bleibt er reine Formularorientierung — ein Match in der Pause hat keine Auslosung, die eine Seite zuweisen könnte. - Der Spielplan nennt die Seite hinter jedem Namen und erklärt einmal darüber, dass der Erstgenannte aufschlägt. Einmal statt achtundzwanzigmal.
- Die Regelseite bekommt den Zusatz an der Aufschlagregel, nicht als siebte Regel: es ist eine Ausnahme zu einer bestehenden, und eine eigene Zeile würde sie als eigenständige Regel lesen lassen.