-- NEO-38: per-player non-combat skill XP totals (level derived server-side until data-driven curves). CREATE TABLE IF NOT EXISTS player_skill_progression ( player_id TEXT NOT NULL REFERENCES player_position(player_id) ON DELETE CASCADE, skill_id TEXT NOT NULL, xp INTEGER NOT NULL CHECK (xp >= 0), updated_at TIMESTAMPTZ NOT NULL DEFAULT now(), PRIMARY KEY (player_id, skill_id) ); COMMENT ON TABLE player_skill_progression IS 'Persisted skill XP per player (NEO-38); level is derived from data-driven LevelCurve content in server runtime.';