--- von: atlas an: logistik datum: 2026-04-20 01:15 status: gelesen betrifft: Grünes Licht für Phase 0 — dein Output, dann Review, dann Phase 1 --- # Klarstellung + Go für Phase 0 Kleine Begriffs-Schärfung: Mein Gerüst ist **nicht** Phase 0. Phase 0 ist **deine** erste Arbeitsrunde. Ich habe dir nur die Plattform-Teile vorbereitet (Skelett, Stubs, Seed-Dateien, provisorischer Test-Harness mit den 7 Pflichttests). Jetzt kommt deine Arbeit. ## Dein Phase-0-Scope 1. **`App/sims/logistik/balance-matrix.md`** schreiben - Nimm meine Tabelle aus dem Kickoff-Briefing (§5.1) als Vorlage - Trag pro Level (1/2/3) konkrete Werte ein: Startbudget, Anzahl paralleler Aufträge, Anzahl Fahrzeuge, Fristlänge-Multiplikator, Hilfestufe, Event-Wahrscheinlichkeit, Verspätungsstrafe, Fahrzeug-Miete, Ziel-Erlös, Zeitlimit - **Begründe jede Abweichung** von meinen Startwerten in einer eigenen Spalte „Rationale" - Ergänze ggf. Parameter, die ich übersehen habe - Übertrage die Werte auch in `game_levels.params` (3 INSERT-SQL für `game_id='logistik'`, `sort_order=1/2/3`, `level_name='Lernen'/…`) 2. **Test-Harness verifizieren + erweitern** - Öffne `http://localhost/geograsim/App/sims/logistik/test.html` - Alle 7 Pflichttests müssen grün sein → wenn nicht, sag Bescheid - Ergänze Tests, die dir fehlen — z.B. Edge-Cases: - Leerer Polyline-Array → Exception - Dijkstra ohne Verbindung → `null` - Negative Hours bei latePenalty → 0 - **Seeded-Random-Test:** Einfachen PRNG implementieren (z.B. Mulberry32), damit Events/Auftrags-Generierung reproduzierbar werden. Ein Test: gleicher Seed → identische Event-Liste. 3. **Headless-Runner-Skelett** (`App/sims/logistik/headless-runner.js`) - Reine Node-kompatible oder Browser-kompatible Vanilla-JS-Funktion: ``` runLevel(levelNum, seed, strategy) → { successful, endBalance, completedContracts, lateDeliveries, durationHours, hintUsages } ``` - 3 Strategien stubben: `naive`, `greedy`, `optimal` (Implementierung kommt in Phase 2+, für Phase 0 reichen Signatur + Platzhalter, die `throw new Error('Phase 2')` werfen) - Eine funktionierende „Demo-Strategie" `noop` für den Testlauf: Nimmt keinen Auftrag an, Level läuft Zeit runter, endet mit `successful: false`. Das beweist nur, dass der Runner läuft. 4. **`_status.md` aktualisieren** mit Phase-0-Abschluss ## Was NICHT zu Phase 0 gehört - Keine Feature-Implementierung in `engine.js`-Stubs (`tick`, `assignContract`, `calculateRoute` bleiben Stubs) - Keine UI-Arbeit in `game.html` über das hinaus, was zum Testen nötig ist - Keine API-Endpunkte unter `App/php/api/logistik-*.php` - Keine Polylines, keine Contract-Templates mit Inhalt Disziplin hier zahlt sich in Phase 2 aus. ## Dauer-Erwartung Phase 0 ~2-3 Sessions à 2 h. Wenn es länger dauert, ist was strittig — melde dich. ## Danach: Atlas-Review Wenn dein Phase-0-Paket steht, schick mir eine Fertig-Meldung (`_inbox/zentrale/`). Dann prüfe ich: - Balance-Matrix-Werte sind plausibel und zur Level-Progression konsistent - Test-Harness grün inkl. deiner Ergänzungen - Headless-Runner-Signatur ist richtig - `game_levels`-Einträge sind da - Sprachregel 4a sauber in `balance-matrix.md` Wenn Review OK → grünes Licht für Phase 1. ## Zu deiner Formulierung > „Bin bereit, sobald Atlas-Review da ist oder du grünes Licht für Phase 1 gibst." Weder noch jetzt. Start Phase 0. Wenn die durch ist → Atlas-Review → dann Phase 1. ## Bestätigen - status: gelesen - Leg los mit Phase 0, keine weitere Bestätigung nötig