# Phase 1: Level-Up (PF2e regelkonform) - Discussion Log > **Audit trail only.** Do not use as input to planning, research, or execution agents. > Decisions are captured in CONTEXT.md — this log preserves the alternatives considered. **Date:** 2026-04-27 **Phase:** 01-level-up-pf2e-regelkonform **Areas discussed:** Prereq-DSL-Scope, Free-Archetype-Regel, Wizard-Flow + DRAFT, Klassen+Spellcaster-Daten --- ## Prereq-DSL-Scope ### Frage: Welche Prereq-Patterns soll der DSL-Evaluator automatisch prüfen? | Option | Beschreibung | Selected | |--------|--------------|----------| | Empfohlener Scope | Skill-Rang, Feat-Besitz, Level, Klasse, Ancestry, Heritage evaluierbar; Deity, Spellcasting-Tradition, Multi-Class, Free-Text → Warnung. ~80%+ Coverage | ✓ | | Minimal-Scope | Nur Skill-Rang + Level + Klasse | | | Maximal-Scope | Plus Attribut-Score, Spellcasting-Tradition, Deity-Kategorien | | **Notes:** Empfehlung aus `.planning/research/SUMMARY.md` direkt akzeptiert. ### Frage: Wie soll die UI mit nicht-evaluierbaren Prereqs umgehen? | Option | Beschreibung | Selected | |--------|--------------|----------| | Inline-Warning + Confirm | Warn-Icon + Tooltip + Confirm-Dialog beim Wählen | ✓ | | Nur Inline-Warning | Warn-Icon ohne Confirm — Risiko Flüchtigkeitsfehler | | | Separater Tab "Manuell prüfen" | Eigene Liste, mehr Klicks | | ### Frage: Woher kommen die Prereq-Strings, die der DSL-Evaluator parst? | Option | Beschreibung | Selected | |--------|--------------|----------| | Bestehende Feat-Tabelle | `Feat.prerequisites: String?` existiert bereits in schema.prisma | ✓ | | Neue strukturierte Prereq-AST-Tabelle | Vor-geparstes AST-JSON pro Feat | | | Hybrid: Lazy Parse + Cache | In-Memory-Cache nach erstem Lookup | | **Notes:** Bestehendes Feld macht Migration unnötig. ### Frage: Soll der Evaluator auch beim Pathbuilder-Import laufen? | Option | Beschreibung | Selected | |--------|--------------|----------| | Nein, nur im Wizard | Pathbuilder-Import bleibt unverändert | | | Ja, auch beim Import | Existierende Talente werden validiert | ✓ | **Notes:** Abweichung vom Default-Vorschlag — User wollte explizit Import-Validation. Folge-Frage zur Behandlung der Verletzung. ### Frage: Was passiert beim Pathbuilder-Import bei Prereq-Verletzung? | Option | Beschreibung | Selected | |--------|--------------|----------| | Import + Warn-Liste | Charakter-Header zeigt Banner mit Liste | ✓ | | Import + Inline-Markierung | Pro Talent ein Icon, keine zentrale Liste | | | Block Import | Strikt — bricht bei jeder Inkonsistenz | | | Keine Anzeige (lautlos) | Nur intern geloggt | | --- ## Free-Archetype-Regel ### Frage: Wie soll der Free-Archetype-Slot nach gewählter Dedication funktionieren? | Option | Beschreibung | Selected | |--------|--------------|----------| | Pathbuilder-Verhalten | Nach Dedication beliebige Archetyp-Talente (Multi-Archetype) | ✓ | | Strikt nur gewählter Archetyp | RAW-strikt, bricht Multi-Archetype | | | Hybrid mit GM-Override | Default strikt, Toggle erlaubt mehr | | **Notes:** Spike-flagged in ROADMAP — direkt entschieden zugunsten Pathbuilder, weil Gruppe das gewohnt ist. ### Frage: Wo wird der Free-Archetype-Toggle pro Charakter eingestellt? | Option | Beschreibung | Selected | |--------|--------------|----------| | Char-Settings + Wizard-Schritt 0 | Settings + Lese-Anzeige im Wizard | ✓ | | Nur Char-Settings | Schlanker, weniger transparent | | | Pro Level-Up neu wählbar | Inkonsistent mit RAW (FA ist Kampagnen-Variant) | | ### Frage: Wie soll mit Free-Archetype umgegangen werden bei Pathbuilder-Import? | Option | Beschreibung | Selected | |--------|--------------|----------| | Auto-detect aus Pathbuilder | Toggle automatisch basiert auf Pathbuilder-JSON | ✓ | | Manuell setzen nach Import | Toggle bleibt inaktiv, Spieler aktiviert | | | Wizard fragt beim ersten Level-Up | Einmalige Wizard-Frage | | --- ## Wizard-Flow + DRAFT ### Frage: Wie soll der Wizard-Flow strukturiert sein? | Option | Beschreibung | Selected | |--------|--------------|----------| | Step-by-Step Modal | Sequenzielle Schritte, mobile-friendly | ✓ | | Single-Page mit Akkordeons | Alles auf einer Seite, Mobile-Scroll | | | Tab-basiert | Frei wechseln, kein klarer Fortschritt | | ### Frage: Wo wird der DRAFT-State persistiert? | Option | Beschreibung | Selected | |--------|--------------|----------| | Server-DRAFT-Session | Neue Prisma-Tabelle `LevelUpSession`, Cross-Device | ✓ | | Client-State (Zustand) | Reload → alles weg | | | LocalStorage | Resume nach Reload, kein Cross-Device | | ### Frage: Soll der Wizard eine Live-Vorschau der neuen Werte anzeigen? | Option | Beschreibung | Selected | |--------|--------------|----------| | Live-Vorschau im Review-Schritt | Vorher/Nachher gegenübergestellt am Ende | ✓ | | Live-Vorschau in jedem Schritt | Per-PATCH-Recompute, Performance-Cost | | | Nur nach Commit sichtbar | Schlankste Implementierung | | ### Frage: Wer darf den Level-Up-Wizard für einen Charakter öffnen? | Option | Beschreibung | Selected | |--------|--------------|----------| | Spieler (Owner) + GM | Konsistent mit checkCharacterAccess | ✓ | | Nur Spieler (Owner) | GM kann nicht für abwesende Spieler leveln | | | Nur GM | Kein selbstständiges Spieler-Leveln | | ### Frage: Was passiert mit einer offenen DRAFT-Session ohne Commit? | Option | Beschreibung | Selected | |--------|--------------|----------| | Bleibt unbegrenzt offen | UI bietet "fortsetzen oder verwerfen?" | ✓ | | TTL 24h, dann auto-löschen | Aufgeräumte DB, Risiko Datenverlust | | | TTL 7 Tage | Mittelweg | | --- ## Klassen+Spellcaster-Daten ### Frage: Woher kommen die Per-Class-Progression-Tabellen? | Option | Beschreibung | Selected | |--------|--------------|----------| | Neue ClassProgression-Tabelle + JSON-Seed | Konsistent mit "alle PF2e-Daten in DB" | ✓ | | Hardcoded TS-Konstanten | Widerspricht Projekt-Regel | | | Lazy aus Pathbuilder ableiten | Nicht regelkonform für neue Stufen | | ### Frage: Welche PF2e-Klassen werden in v1 unterstützt? | Option | Beschreibung | Selected | |--------|--------------|----------| | Alle Core- + APG-Klassen | 16 Klassen, ~95% Coverage | ✓ | | Nur die Klassen, die eure Gruppe spielt | Schmaler Scope | | | Alle Klassen aus PC1 + PC2 (Remaster) | Mehr Klassen, mehr Seed-Aufwand | | ### Frage: Welche PF2e-Datenquelle für den Class-Progression-Seed? | Option | Beschreibung | Selected | |--------|--------------|----------| | Foundry PF2e-System Open Data | Aktiv gepflegt, ORC-lizenziert | ✓ | | Manuell aus Archives of Nethys | Volle Kontrolle, sehr aufwendig | | | Open5e / pf2e-data NPM-Paket | Oft unvollständig | | ### Frage: Wie wird der Spellcaster-Repertoire-Increment-Schritt präsentiert? | Option | Beschreibung | Selected | |--------|--------------|----------| | Eigener Wizard-Schritt | Klar separiert von Slot-Increment | ✓ | | Inline in Spellcaster-Schritt | Kompakter, weniger klar | | | Später im Charakterbogen | Charakter nach Commit nicht "fertig" | | ### Frage: Wie sollen Wahl-Klassenmerkmale (Doctrine, Schule, Weapon Mastery) gehandhabt werden? | Option | Beschreibung | Selected | |--------|--------------|----------| | Wizard erkennt + zeigt Sub-Schritt | Volle Regelkonformität, Charakter "fertig" | ✓ | | Erst nach Commit füllen | Spieler vergisst es vielleicht | | | Nur Anzeige + manuelle Notiz | Kein strukturiertes Datenmodell | | --- ## Claude's Discretion - UI-Layout-Details des Step-by-Step-Modals (Header, Footer, Progress-Indicator) - Spaltenstruktur des Review-Schritts (Tabelle vs. zwei Spalten) - DRAFT-API-Endpoint-Naming - JSON-Format des Snapshot-Vorher - Genaue deutsche Error-Messages - Test-Granularität jenseits der Kern-Funktionen ## Deferred Ideas - Level-up-Historie-Ansicht (LVL-V2-01) - Reverse-Level-Up (LVL-V2-02) - Variant-Class-Features (Rogue Eldritch Trickster etc.) - Multi-Classing (out of scope) - Live-Recompute pro Schritt (verworfen) - Remaster-Klassen (PC1+PC2)