**Tabletmodus: Aluminium**: Treffer an Latte oder Pfosten lassen sich als eigenes Schussergebnis `post` erfassen (fe#651). Sie zählen als Schuss, aber nicht aufs Tor und nicht in die Fangquote; die ausführliche Statistik weist sie je Team als `posts` aus. In den virtuellen Highlights wird jeder Aluminiumtreffer eine Szene (`kind: 'post'`), abwählbar wie Tor-Szenen; im Szenen-Editor lässt sich ein Tor-Schuss ohne Tor auch zum Aluminiumtreffer machen. Sprungmarken bleiben bei Toren und Strafen. Muss vor dem Frontend live sein.
Behoben
**Lizenzabrechnung ordnet Lizenzen in Spielgemeinschaften dem Heimatverein zu**: Ist der Heimatverein des Spielers Verein der SG, steht die Lizenz jetzt bei ihm; sonst beim SG-Verein, bei dem der Spieler eine Freigabe hat. Die Prüfung auf den Heimatverein las bisher einen Schlüssel, den es nie gab (`license_hash_id` statt `home_club_id`), und griff deshalb nie. Hatte der Spieler zusätzlich einen gültigen Eintrag beim SG-Partner, etwa eine Freigabe, stand seine Lizenz beim Partner. In der Saison 2026/27 betraf das 13 Lizenzen (4 Haupt-, 9 Zusatzlizenzen).
**CI läuft wieder**: Seit dem 4.11. brach jeder CI-Lauf vor den Tests ab, weil `ubuntu-latest` auf Ubuntu 26.04 umgestellt wurde und es dort kein Ruby 3.2.4 gibt. Der Runner ist jetzt fest auf `ubuntu-24.04`.
**Lizenzabrechnung berechnet zusammengeführte Dubletten nicht mehr doppelt**: Beim Zusammenführen kommen die Lizenzen einer Dublette auf den Master, die Dublette behielt ihre Einträge aber. Die Gebührenrechnung lief über alle Spieler und berechnete diese Lizenzen deshalb ein zweites Mal voll, zum Stichtag 31.10.2026 fünf Dubletten mit 70 €. Jetzt zählen zusammengeführte Dubletten nicht mehr als eigene Spieler, ihre Lizenzen zählen wie Lizenzen des Masters (bei Ketten des letzten). Fehlt eine Lizenz der Dublette beim Master, etwa nach einer älteren Zusammenführung, wird sie ihm zugerechnet und entscheidet mit seinen eigenen über Haupt- und Zusatzlizenz. Solche Lizenzen tragen in der Ausfuhr die neue letzte Spalte `merged_from_id` und werden im Log gemeldet.
**Livestream-Wächter meldet eine offene Zusage nur noch einmal**: Eine nie eingelöste Zusage (nicht gelistete Übertragung, die nach dem Spiel öffentlich werden sollte) meldete der Wächter bei jedem Lauf erneut nach Sentry, alle fünf Minuten und ohne Ende. 16 alte Zusagen vom 26.09. bis 25.10. erzeugten so über 3700 Ereignisse und verbrauchten das Sentry-Kontingent, das sich API und Frontend teilen; zuletzt wurden zwei Drittel aller Fehler verworfen. Neu merkt sich `stream_broadcasts.overdue_reported_at` die Meldung, jede Zusage erscheint genau einmal. Gestempelt wird erst nach der Zustellung; bricht der Lauf danach an YouTube ab (Kontingent, Token), stellt der Rake-Task die gesammelten Probleme trotzdem zu. Belebt der Wächter einen von der Buchhaltung geschlossenen Satz wieder, verliert er den Stempel. Der Probelauf stempelt nicht.