---
instanz: fluss
zuletzt_aktualisiert: 2026-05-07 (Session-Ende, Übergabe)
session_id: shutdown-handover
---

# Übergabe-Stand

Thomas hat die Instanz heute heruntergefahren, machen morgen weiter.
Alle 5 offenen Inbox-Briefe sind **gelesen, aber NICHT umgesetzt** —
die nächste Fluss-Session muss sie abarbeiten.

## Module-Stand
Funktional komplett seit der Phase-5-Fertig-Meldung (2026-04-19 15:30):
Engine, Canvas, Tutorial, Tools, Fische, Ernte-Animation, Sounds,
Musik, Endscreen mit Reflexion, alle 7 Werkzeuge in allen Stufen,
Reset/Endscreen mit Stufen-Auswahl-Grid (`.ggs-level-grid`),
Mute-Button, flood-overlay als Wellenschicht, Tierarten-Mechanik.

**Letzte Änderungen heute** (Balance-Tuning auf Wunsch von Thomas):
- `INCOME_FACTOR = 0.5` (halbierter Budget-Zuwachs)
- Fluss wandert bis zu 2 Punkte/Jahr, Chance ~95 %
- Feld ertrinkt nach **1** Jahr Flut (vorher 2)
- Siedlungs-Zerstörung fi > 0.4, 12 % (vorher 0.5/5 %)
- Wald stirbt nach **2** Jahren (vorher 3)
- Deich-Erosion fi > 0.35, 15 % (vorher 0.4/8 %)
- Fischfang `(3-d) × pop × 0.75` (vorher 0.4)
- Biodiv-Formel: Wald × 2 (vorher × 4), Bau-Strafe × 2.5 (vorher × 1.5)
  → Startwert ≈ 100, jeder Bau sofort sichtbar
- Nahrungs-Skala `× 0.3` (vorher × 1.5) → 100 erst bei halber Talfläche

## Externe Modifikation an `pages/fluss.php` (NICHT zurückbauen)
Atlas/Thomas hat live-Wrapper-Erweiterungen eingebaut:
- `<script src="…/assets/js/live-client.js" defer>` injiziert (Heartbeat,
  Pause-Polling, Spectator-Mode)
- `href="/schueler"` → `cockpit_href()` Rewrite
Wenn die Datei in einer neuen Session geöffnet wird: das ist gewollt.

## OFFENE AUFGABEN (Reihenfolge nach Atlas' Empfehlung)

### 1. Integrations-Umbau (Atlas, 2026-04-23, prio HOCH)
[2026-04-23-1100-integrations-auftrag.md](App/sims/_inbox/fluss/2026-04-23-1100-integrations-auftrag.md)

`App/pages/fluss.php` muss `App/docs/integration-konzept.md §6`
einhalten:
1. Session-ID aus `student_sessions` oder Demo-UUID generieren
2. `GET /api/modules?student=…&module_id=fluss` aufrufen
3. Je nach `mode` (free/teacher_started/locked):
   - free → Level-Picker (haben wir schon clientseitig)
   - teacher_started → forcedLevel direkt starten
   - locked → Sperrseite zeigen
4. `window.FLUSS_SESSION_MODE` + `window.STUDENT_EASY` setzen
**Vorbild:** `App/pages/logistik.php`

Dazu **Assessment-Calls** an `POST /api/assessment.php`:
- phase: "started" beim Level-Start
- phase: "running" alle ~30 s mit Kennzahlen
- phase: "completed" am Ende mit results

### 2. Live-State-Hook (Atlas, 2026-05-05, prio MITTEL)
[2026-05-05-0250-live-state-vergleichstabelle.md](App/sims/_inbox/fluss/2026-05-05-0250-live-state-vergleichstabelle.md)

In `App/sims/fluss/game.html` einbauen:
```js
window.GGS_LIVE_STATE = function () {
  if (!game) return null;
  return {
    level: game.level,
    year: game.year,
    population: …,
    budget: game.budget,
    biodiv: …,
    flood: …,
    economy: …,
    settlements_lost: game.stats.settlementsLost,
    species_count: Object.keys(game.species).length,
  };
};
```
**Vorbild:** `App/sims/klima/game-2d.html:1317`
Dazu in zentrale-Inbox melden, welche 4–8 Felder als
`LIVE_PRIMARY_FIELDS.fluss` Default-Spalten in `teacher.html` sollen.

### 3. Endscreen-iPad-Polish (Atlas, 2026-05-05, prio MITTEL)
[2026-05-05-0310-endscreen-ipad-polish.md](App/sims/_inbox/fluss/2026-05-05-0310-endscreen-ipad-polish.md)

Aktuell sind die 6 Erfolg-Badges vertikal untereinander → Modal scrollt
am iPad-Landscape. Wunsch:
- Badges horizontal, `flex-wrap: wrap; justify-content: center; gap: .5rem`
- Modal `max-width: min(720px, 92vw)`, weniger hoch
- 2-Spalten-Layout wo möglich (Stats + Reflexion nebeneinander)
- Score-Tile-Block kompakter (`padding: .5rem`)
- Sticky Aktions-Buttons unten (haben wir schon)
**Pattern:** `feedback_ipad_overlay_pattern.md`
**Atlas-Info nebenbei:** Reflexionen werden jetzt in
`assessments.reflections` gespeichert, kein Code-Change nötig.

### 4. Atlas-Crash-Recovery-Antwort (Atlas, 2026-05-04, prio NIEDRIG)
[2026-05-04-0900-atlas-crash-recovery.md](App/sims/_inbox/fluss/2026-05-04-0900-atlas-crash-recovery.md)

Atlas weiß nach seinem Crash nicht, was bei uns offen ist. Eine kurze
Statusmeldung in `_inbox/zentrale/` mit drei Punkten:
1. Was Atlas noch tun muss (Wrapper-Anpassung kommt nicht von Atlas, kommt
   von uns; Glossar-Trio ist da; ggs-level-grid ist da)
2. Was seit dem letzten Brief erledigt ist
3. Was informationshalber ist
Im Wesentlichen: "Alles funktional fertig, Balance heute angepasst,
Integrations-Umbau und Live-State-Hook stehen noch an, nichts
deploy-blockierend."

### 5. Glossar-Trio-Info (Glossar, 2026-05-03, prio: kein Aufwand)
[2026-05-03-2255-glossar-trio-fertig.md](App/sims/_inbox/fluss/2026-05-03-2255-glossar-trio-fertig.md)

Drei Begriffe (`hochwasserschutz`, `flussbegradigung`, `ufervegetation`)
sind jetzt als Volleinträge in der DB. Lokales Fallback-`GLOSSAR`-Object
in `game.html` kann bleiben. Optional: "Voller Glossar-Eintrag →"-Link
einbauen wie Klima (`game-2d.html:4225` mit `resolveGlossarDbKey()`).
Kein Druck.

## Dateien-Touch-Liste (heutige Session)
- `App/sims/fluss/engine.js` — Balance-Werte (s. o.)
- `App/sims/fluss/game.html` — `.fl-level-*` → `.ggs-level-*`,
  initialer Level-Picker, Mute-Button, Flood-Overlay als Wellen,
  too-expensive Cards
- `App/sims/_inbox/zentrale/2026-04-19-1530-fluss-fertig-meldung.md`
- `App/sims/_inbox/zentrale/2026-04-19-1615-fluss-level-picker-standard.md`
- `App/sims/_inbox/glossar/2026-04-19-1500-fluss-begriffsbedarf.md`

**Nicht commited.** Thomas hat heute kein Go gegeben.

## Wichtige Regeln (zur Selbstkontrolle nach Reaktivierung)
- **Keine Spielsprache** im UI ("Arbeitsstand", "Stufe", "Durchgang")
- **iPad-Referenz** 1180×820, Touch-Targets ≥ 36 px
- **V1 unangetastet** unter `App/fluss.html`
- **`pages/fluss.php` extern modifiziert** — Live-Client + Cockpit-Rewrite
  nicht zurückbauen!
- **Sound-Generierung** braucht auf Windows
  `SSL_CERT_FILE=D:/Programme/Inkscape/lib/python3.9/site-packages/certifi/cacert.pem`
- **Vor jeder Fertig-Meldung** Inbox-Check
- **Konvention** verlangt Git-Commit am Session-Ende — bei Reaktivierung
  fragen, ob jetzt commited werden darf (heute aufgeschoben)
